Close Postgres connections on both success and failure paths (#104)#105
Open
BWilliams1004 wants to merge 1 commit into
Open
Close Postgres connections on both success and failure paths (#104)#105BWilliams1004 wants to merge 1 commit into
BWilliams1004 wants to merge 1 commit into
Conversation
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.
Closes #104. Two connection leaks fixed:
sql2csv.py'srun_sql_script()only calledconnection.close()on thesuccess path if the query raised, execution jumped to the except block, and the connection was never closed. Now wrapped in a
finallyblock.(with a
Noneguard, sincepsycopg2.connect()itself could fail beforeconnectionis ever assigned, so it always closes, success or failure.run_pg.py'srun_pg()never closed its connection at all. Rewritten toUse
withcontext managers for both the connection and the cursor, whichclose automatically on exit regardless of outcome.
Testing: Verified locally end-to-end for both. Set up an isolated venv for
sql2datasetsits dependencies conflicted with the main venv’s pinnedaiobotocore/botocoreversions used a separateenv-sql2datasetstoavoid that going forward. For each fix, I ran both a real failing query and
a real successful query against the live database, then confirmed via
pg_stat_activity, the connection counts stayed flat afterward in bothcases, no leaked sessions on success or failure.