Uh oh!
There was an error while loading. Please reload this page.
gh-108083: Don't ignore exceptions in sqlite3.Connection.__init__() and .close() - #108084
Conversation
…__() and .close() Always check the return value of connection_exec_stmt()
Uh oh!
There was an error while loading. Please reload this page.
vstinner
commented
Aug 17, 2023
Maybe only change close once you converted sqlite connection to finalizer API. Maybe start with a first PR to convert dealloc to finalizer API? |
erlend-aasland
commented
Aug 17, 2023
Yeah, I think I want to land #108015 first. |
Uh oh!
There was an error while loading. Please reload this page.
erlend-aasland
commented
Aug 17, 2023
Actually, I'll land this first; I want to wait for some external opinions before continuing with the finalizer PR :) |
erlend-aasland
commented
Aug 17, 2023
@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 do post 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.
vstinner
left a comment
There was a problem hiding this comment.
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.
erlend-aasland
commented
Aug 18, 2023
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>
miss-islington
commented
Aug 18, 2023
Thanks @erlend-aasland for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11, 3.12. |
miss-islington
commented
Aug 18, 2023
Sorry, @erlend-aasland, I could not cleanly backport this to |
miss-islington
commented
Aug 18, 2023
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 commit fd19509) Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
bedevere-bot
commented
Aug 19, 2023
GH-108141 is a backport of this pull request to the 3.12 branch. |
erlend-aasland
commented
Aug 19, 2023
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 commit fd19509) Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Always check the return value of connection_exec_stmt()