closeConnectionFully is performed without lock #115
Closed
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
closeConnectionFully
we 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)