feat: backup improvements
All checks were successful
Deploy to Staging / Build Images (push) Successful in 4m31s
Deploy to Staging / Deploy to Staging (push) Successful in 37s
Deploy to Staging / Verify Staging (push) Successful in 6s
Deploy to Staging / Notify Staging Ready (push) Successful in 6s
Deploy to Staging / Notify Staging Failure (push) Has been skipped

This commit is contained in:
Eric Gullickson
2026-01-01 13:57:36 -06:00
parent ea482b745e
commit 9043a581b1
7 changed files with 92 additions and 35 deletions

View File

@@ -214,11 +214,9 @@ export class BackupRestoreService {
const pgEnv = { ...process.env, PGPASSWORD: dbPassword };
try {
// Drop existing connections (except our own)
await execAsync(
`psql -h ${dbHost} -p ${dbPort} -U ${dbUser} -d postgres -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${dbName}' AND pid <> pg_backend_pid();"`,
{ env: pgEnv }
);
// Note: We no longer terminate connections before restore.
// The --clean flag in pg_dump generates DROP statements that handle existing data.
// Terminating connections would kill the backend's own pool and break the HTTP response.
// Restore the database using psql
await execAsync(