-
Notifications
You must be signed in to change notification settings - Fork 594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rewrite host connection pool as single GraphStage #1312
Comments
This sounds like an interesting one. |
@tomrf1, good point. The reason for the buffer is that requests can always be pushed towards a pool by running them via I think we might want to separate the effort into a part of just rewriting Rewriting |
A new implementation of the HostConnectionPool. The basic idea is to replace the former complicated streaming pipeline of `PoolFlow`, `PoolConductor`, and `PoolSlot` into a single stage that handles all aspects to get rid of all the small race condition issues that exist in the current ("legacy") pool implementation. The new pool implementation is split into two basic classes * akka.http.impl.engine.client.pool.NewHostConnectionPool that provides all the infrastructure and event handling to drive the pool * akka.http.impl.engine.client.pool.SlotState that contains only the logic to handle state changes of a single pool slot
A new implementation of the HostConnectionPool. The basic idea is to replace the former complicated streaming pipeline of `PoolFlow`, `PoolConductor`, and `PoolSlot` into a single stage that handles all aspects to get rid of all the small race condition issues that exist in the current ("legacy") pool implementation. The new pool implementation is split into two basic classes * akka.http.impl.engine.client.pool.NewHostConnectionPool that provides all the infrastructure and event handling to drive the pool * akka.http.impl.engine.client.pool.SlotState that contains only the logic to handle state changes of a single pool slot
A new implementation of the HostConnectionPool. The basic idea is to replace the former complicated streaming pipeline of `PoolFlow`, `PoolConductor`, and `PoolSlot` into a single stage that handles all aspects to get rid of all the small race condition issues that exist in the current ("legacy") pool implementation. The new pool implementation is split into two basic classes * akka.http.impl.engine.client.pool.NewHostConnectionPool that provides all the infrastructure and event handling to drive the pool * akka.http.impl.engine.client.pool.SlotState that contains only the logic to handle state changes of a single pool slot
A new implementation of the HostConnectionPool. The basic idea is to replace the former complicated streaming pipeline of `PoolFlow`, `PoolConductor`, and `PoolSlot` into a single stage that handles all aspects to get rid of all the small race condition issues that exist in the current ("legacy") pool implementation. The new pool implementation is split into two basic classes * akka.http.impl.engine.client.pool.NewHostConnectionPool that provides all the infrastructure and event handling to drive the pool * akka.http.impl.engine.client.pool.SlotState that contains only the logic to handle state changes of a single pool slot
A new implementation of the HostConnectionPool. The basic idea is to replace the former complicated streaming pipeline of `PoolFlow`, `PoolConductor`, and `PoolSlot` into a single stage that handles all aspects to get rid of all the small race condition issues that exist in the current ("legacy") pool implementation. The new pool implementation is split into two basic classes * akka.http.impl.engine.client.pool.NewHostConnectionPool that provides all the infrastructure and event handling to drive the pool * akka.http.impl.engine.client.pool.SlotState that contains only the logic to handle state changes of a single pool slot
#1312 Rewrite of PoolFlow / PoolSlot / PoolConductor as single GraphStage
The new pool implementation will be available in 10.0.11 under a flag. I'm closing this one in favor of follow up tickets to flesh out details of behavior in the new implementation when it got some more testing. |
Is the new pool implementation still available only under a flag in 10.1.1, and if so, what's the flag? And does it resolve #1459? |
As far as I can see that should remove lots of the stream related bugs. The custom GraphStage should contain all logic from
PoolInterfaceActor
,PoolConductor
,PoolSlot
. The external interface should probably be aFlowShape[HttpRequest, HttpResponse]
. ThePoolMasterActor
can then use that instead of sending messages to the currentPoolInterfaceActor
.I guess in the best case, we would make this new implementation available under a feature flag depending on our confidence on getting it right.
The text was updated successfully, but these errors were encountered: