Fix connection pool bug which can cause delays in obtaining a connection#3079
Merged
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #3079 +/- ##
============================================
+ Coverage 77.87% 78.11% +0.24%
- Complexity 13578 13969 +391
============================================
Files 1015 1019 +4
Lines 59308 60036 +728
Branches 6835 6971 +136
============================================
+ Hits 46184 46896 +712
+ Misses 10817 10816 -1
- Partials 2307 2324 +17 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
8fe0f89 to
b4c2646
Compare
… a thread attempting to retrieve a connection calls await, causing 16 second wait for obtaining a connection. This scenario is now prevented by locking before obtaining and potentially calling await for an available connection.
dc92178 to
3571595
Compare
Cole-Greer
reviewed
Apr 7, 2025
Contributor
|
VOTE +1 |
2 similar comments
Contributor
|
VOTE +1 |
Contributor
|
VOTE +1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
It has been observed in some environments that integration tests such as
GraphBinaryGroovyRemoteFeatureTestcan encounter 16 second delays between test executions. Investigation shows this can occur if one thread is attempting to obtain a connection and another thread is creating or releasing a connection at the same time. It is possible for the thread releasing or creating a connection to signal thehasAvailableConnectioncondition after the other thread has determined there are no available connections but before callingawaiton the condition. Thus the thread obtaining the connection will wait for default timeout of 16 seconds before attempting to retrieve a connection again, causing the observed delays.This fix involves locking the
waitLockbefore obtaining and potentially calling await for an available connection which prevents other threads from signalling thehasAvailableConnectionbefore other threads callawait. The fix was tested by observing integration test execution on environments which previously produced the 16 second delays and also by executingProfilingApplication. The results ofProfilingApplicationdid not demonstrate any degradation of average requests per second.