Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
gh-108083: Don't ignore exceptions in sqlite3.Connection.__init__() and .close()#108084
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
gh-108083: Don't ignore exceptions in sqlite3.Connection.__init__() and .close()#108084
Uh oh!
There was an error while loading.Please reload this page.
Conversation
…__() and .close()Always check the return value of connection_exec_stmt()
Uh oh!
There was an error while loading.Please reload this page.
Maybe only change close once you converted sqlite connection to finalizer API. Maybe start with a first PR to convert dealloc to finalizer API? |
Yeah, I think I want to land#108015 first. |
Uh oh!
There was an error while loading.Please reload this page.
Actually, I'll land this first; I want to wait for some external opinions before continuing with the finalizer PR :) |
@vstinner, I added the finalizer code from#108015 here. I thought it made for a cleaner shutdown operation. I also made sure we close the database before we free the callback contexts. There's a few things I'd like to dopost this PR, and that is to properly handle |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LGTM, nice fix.
I just left a minor coding style remark, feel free to ignore it.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Thanks for the reviews, Serhiy and Victor; it helps to have more eyes, especially for scenarios like this. It is easy to misstep. |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Thanks@erlend-aasland for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11, 3.12. |
Sorry,@erlend-aasland, I could not cleanly backport this to |
Sorry,@erlend-aasland, I could not cleanly backport this to |
….__init__() and .close() (python#108084)- Add explanatory comments- Add return value to connection_close() for propagating errors- Always check the return value of connection_exec_stmt()- Assert pre/post state in remove_callbacks()- Don't log unraisable exceptions in case of interpreter shutdown- Make sure we're not initialized if reinit fails- Try to close the database even if ROLLBACK fails(cherry picked from commitfd19509)Co-authored-by: Victor Stinner <vstinner@python.org>Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
bedevere-bot commentedAug 19, 2023
GH-108141 is a backport of this pull request to the3.12 branch. |
FYI: |
…t__() and .close() (#108084) (#108141)- Add explanatory comments- Add return value to connection_close() for propagating errors- Always check the return value of connection_exec_stmt()- Assert pre/post state in remove_callbacks()- Don't log unraisable exceptions in case of interpreter shutdown- Make sure we're not initialized if reinit fails- Try to close the database even if ROLLBACK fails(cherry picked from commitfd19509)Co-authored-by: Victor Stinner <vstinner@python.org>Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Uh oh!
There was an error while loading.Please reload this page.
Always check the return value of connection_exec_stmt()