fix(GRO-2652): promote boot ECONNRESET resilience to UAT (dev→uat) #223

Merged
Flea Flicker merged 18 commits from dev into uat 2026-08-05 10:22:03 +00:00
Showing only changes of commit 632dadd064 - Show all commits
+21 -6
View File
@@ -124,13 +124,28 @@ export async function initAuth(): Promise<void> {
return;
}
// Step 1: Try to load config from DB
// Step 1: Try to load config from DB, with retry-with-backoff for transient ECONNRESET (GRO-2652).
// A single connection reset during boot must not abort initialization.
const db = getDb();
const [dbConfig] = await db
.select()
.from(authProviderConfig)
.where(eq(authProviderConfig.enabled, true))
.limit(1);
let dbQueryRows: (typeof authProviderConfig.$inferSelect)[] = [];
let dbAttempt = 0;
while (true) {
try {
dbQueryRows = await db
.select()
.from(authProviderConfig)
.where(eq(authProviderConfig.enabled, true))
.limit(1);
break;
} catch (err) {
dbAttempt++;
if (dbAttempt >= 5) throw err;
const delay = Math.min(1000 * 2 ** (dbAttempt - 1), 8_000);
console.warn(`[auth] DB query attempt ${dbAttempt} failed (${err}), retrying in ${delay}ms`);
await new Promise((r) => setTimeout(r, delay));
}
}
const [dbConfig] = dbQueryRows;
let providerConfig: {
providerId: string;