Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes a little mistake in a
SimpleConnectionPool
that may allow more than allowed connections to be created.Root Cause
A
borrowCount
was incorrectly used check if we need to create a new connection or not. But there is a problem:A connection establishment is an asynchronous operation, and
borrowCount
is incremented only after the establishment has completed, and the new connection is handed out to a pool consumer.Due to TCP 3 way handshake and a potential SSL handshake there is a considerable time lag between start of the connection establishment and
borrowCount
being incremented.Extra connections can get created within this time window.
Fix
Add an extra counter to track the number of connections under establishment. Only trigger a connection establishment if
borrowCount
+connectionsUnderEstablishment
is less than maximum allowed.