baseplate.go
baseplate.go copied to clipboard
Add support for MinConnections to thriftbp.ClientPool
💸 TL;DR
This adds the ability to specify a minimum number of connections to thriftbp.ClientPool
and clientpool.ChannelPool
. Having a maintained minimum pool size provides benefits for load balancing which can help even out CPU/RAM utilization on the server side.
📜 Details
We can't rely on requiredInitialClients
(since it can fail startup) and if bestEffortInitialClients
fails we end up with a partly preallocated pool, this provides a mechanism to maintain the pool size on an ongoing basis.
This is accomplished by spinning up an ensureMinClients
goroutine per pool which will check the total number of connections (active+idle) and open more as needed to keep that amount >= the minimum.
It should be non-breaking as the default behaviour is to not have a minimum set and not spin up the ensureMinClients
goroutine.
🧪 Testing Steps / Validation
✅ Checks
- [ ] CI tests (if present) are passing
- [ ] Adheres to code style for repo
- [ ] Contributor License Agreement (CLA) completed if not a Reddit employee