From ae3c0119f95c4870794fdc4424a0dc3b6530c113 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 9 Aug 2026 01:38:03 +0200 Subject: [PATCH] fix(storage): close database after bootstrap failure The bootstrap wrapper releases the SQLite handle when daemon construction fails before returning the normal shutdown owner. --- packages/server/src/server/bootstrap.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/server/src/server/bootstrap.ts b/packages/server/src/server/bootstrap.ts index 30c8d26e3c..81b197e54c 100644 --- a/packages/server/src/server/bootstrap.ts +++ b/packages/server/src/server/bootstrap.ts @@ -555,6 +555,20 @@ export async function createPaseoDaemon( configureGitProcessPolicy(config.git ?? resolveGitProcessPolicy({ env: process.env })); const logger = rootLogger.child({ module: "bootstrap" }); const database = openDatabase(config.paseoHome); + try { + return await createPaseoDaemonWithDatabase(config, logger, dependencies, database); + } catch (error) { + database.close(); + throw error; + } +} + +async function createPaseoDaemonWithDatabase( + config: PaseoDaemonConfig, + logger: Logger, + dependencies: PaseoDaemonDependencies, + database: ReturnType, +): Promise { const bootstrapStart = performance.now(); const elapsed = () => `${(performance.now() - bootstrapStart).toFixed(0)}ms`; const daemonVersion = config.daemonVersion ?? resolveDaemonVersion(import.meta.url);