fix: DB connection resilience — retry logic, parallel queries, PgBouncer compat#1989
Closed
EmmaLouise2018 wants to merge 2 commits intomainfrom
Closed
fix: DB connection resilience — retry logic, parallel queries, PgBouncer compat#1989EmmaLouise2018 wants to merge 2 commits intomainfrom
EmmaLouise2018 wants to merge 2 commits intomainfrom
Conversation
…parameter
Fly.io's managed Postgres (behind PgBouncer) rejects statement_timeout
as a startup parameter in the connection options string. Move the 30s
query timeout to a pool.on("connect") handler so it's set via SET after
connection establishment, which is universally supported.
6df7677 to
624084c
Compare
…ries Transient DB connection timeouts caused the hourly seat-request reminder check to fail silently until the next interval. This adds a 3-attempt retry with linear backoff around findStaleSeatRequests(), and runs the two independent queries in parallel via Promise.all to halve the timeout exposure window.
624084c to
1f90627
Compare
5 tasks
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
seat-request-remindersscheduled job so transient DB connection timeouts don't silently skip the hourly checkfindStaleSeatRequests()viaPromise.all, halving timeout exposurestatement_timeout=30000from Pool startupoptionsto a per-connectionSEThandler for PgBouncer compatibilityRoot Cause
seat-request-reminderscallsfindStaleSeatRequests()with no retry — a single DB timeout causes the check to fail until the next hourly intervalfindStaleSeatRequests()ran sequentially, doubling the window for connection dropsoptions: '-c statement_timeout=30000'to the Pool constructor, but PgBouncer rejects startup parametersTest Plan