baseplate.go icon indicating copy to clipboard operation
baseplate.go copied to clipboard

Add support for MinConnections to thriftbp.ClientPool

Open m3lawren opened this issue 1 year ago • 0 comments

💸 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

m3lawren avatar Nov 09 '23 17:11 m3lawren