From fc6857688bcc93a6072193b601141c1da6fb57c6 Mon Sep 17 00:00:00 2001 From: d0zingcat Date: Sat, 17 Jan 2026 15:38:50 +0800 Subject: [PATCH] feat: Implement PostgreSQL advisory locks to prevent concurrent database migrations. --- apps/server/src/db/migrate.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/server/src/db/migrate.ts b/apps/server/src/db/migrate.ts index 06a5ffa..d0695fd 100644 --- a/apps/server/src/db/migrate.ts +++ b/apps/server/src/db/migrate.ts @@ -56,6 +56,11 @@ async function main() { } try { + // Acquire advisory lock to prevent concurrent migrations + console.log("🔒 Acquiring advisory lock..."); + await sql`SELECT pg_advisory_lock(1234567890)`; + console.log("🔒 Advisory lock acquired."); + await migrate(db, { migrationsFolder }); console.log("✅ Database migrations completed!"); @@ -64,6 +69,10 @@ async function main() { console.error("❌ Migration failed:", error); process.exit(1); } finally { + // Release advisory lock + console.log("🔓 Releasing advisory lock..."); + await sql`SELECT pg_advisory_unlock(1234567890)`; + console.log("🔓 Advisory lock released."); await sql.end(); } }