closeConnectionFully is performed without lock#115
Closed
rPraml wants to merge 1 commit intoebean-orm:masterfrom
Closed
closeConnectionFully is performed without lock#115rPraml wants to merge 1 commit intoebean-orm:masterfrom
rPraml wants to merge 1 commit intoebean-orm:masterfrom
Conversation
rPraml
added a commit
to FOCONIS/ebean-datasource
that referenced
this pull request
Feb 28, 2025
rPraml
commented
Mar 3, 2025
Collaborator
Author
rPraml
left a comment
There was a problem hiding this comment.
Hello @rbygrave
Have you had time to watch this and can you give me feedback?
I think we have found a problem why our application sometimes practically hangs.
As long as the pool is busy with CloseConnectionFully, no further connections will be issued (pool is completely blocked)
I'm unsure what to do in "reset"? This should not block or at least should not block too long.
ebean-datasource/src/main/java/io/ebean/datasource/pool/ConnectionPool.java
Show resolved
Hide resolved
bced7e8 to
255090d
Compare
Collaborator
Author
|
Closing, as #127 is merged |
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.
Note: #127 would be our preferred solution
We now might have a better understanding what happened due our network outage.
In #114 we have already identified, that the connection.close may block.
In case of the DB2 driver (and maybe other drivers, too), the connection.close() will communicate with the database.
During
closeConnectionFullywe hold a lock, so that no other thread can obtain new connections (although if there are free ones)In this PR we tried to do the closeConnectionFully outside of the scope of the lock. This should increase the multi thread performance of the pool.
Please take a look at these changes, if you would agree.
There are still two places, where the closeConnectionFully is called within the lock:
So I'm unsure how to deal with the reset.
We assume, that restarting the pool took over 2 hours since our last crash.
We also added some more places, where logError is true (to be honest, I will always print the error in closeConnectionFully)