Fix connection pool leak in Listener.Connect on afterConnectExec failure#1147
Merged
brandur merged 1 commit intoriverqueue:masterfrom Feb 15, 2026
Merged
Conversation
When afterConnectExec fails (used for setting custom schema search paths), the acquired pool connection was not released back to the pool. This could deplete the connection pool on repeated reconnection failures. The QueryRow error path 10 lines below already had the correct poolConn.Release() call, but the Exec path was missing it. The test creates a pool with MaxConns=1 and sets afterConnectExec to invalid SQL. Without the fix, a subsequent Acquire blocks forever because the single connection was leaked. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
brandur
approved these changes
Feb 15, 2026
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.
Summary
afterConnectExecfails inListener.Connect(), the acquired pool connection is not released back to the pool, causing a connection leakQueryRowerror path 10 lines below already correctly callspoolConn.Release(), but theExecerror path was missing itMaxConns=1, setsafterConnectExecto invalid SQL, and verifies the connection is returned to the pool after the error (without the fix, a subsequentAcquirehangs forever)Test plan
TestListener_Connect/ReleasesPoolConnOnAfterConnectExecErrorverifies the fix (fails without it, passes with it)TestListener_Connect/SuccessfulConnectverifies normal connect still works🤖 Generated with Claude Code