Fix connection_wrapper destructor sometimes closing other connections #312
+18
−2
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.
Currently, if a dbapi connection is closed using
connection.close()
, and then another dbapi connection is opened before the first connection is destroyed, the destruction of the first connection's python object will cause the second connection to be closed.This happens because
connection_wrapper.conn
continues to point at the globalchdb_conn*
afterclose()
runs, so it's possible for theconnection_wrapper
destructor to close a connection it didn't create.I used this short script to test this:
the second to last line throws
# Exception: Invalid or closed connection
with chdb 3.1.1, but not with a wheel built from this commit.Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Fix connection_wrapper destructor sometimes closing other connections
Documentation entry for user-facing changes
CI Settings
NOTE: If your merge the PR with modified CI you MUST KNOW what you are doing
NOTE: Checked options will be applied if set before CI RunConfig/PrepareRunConfig step
Run these jobs only (required builds will be added automatically):
Deny these jobs:
Extra options:
Only specified batches in multi-batch jobs: