From a3f19f0413a1d2e8d4e189af1b1eaf93583efae9 Mon Sep 17 00:00:00 2001 From: Danil Nikolaev Date: Tue, 19 May 2026 17:58:09 +0300 Subject: [PATCH] Fix startup schema migration deadlock --- src/db/database-manager.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/db/database-manager.ts b/src/db/database-manager.ts index e756159..8f921fc 100644 --- a/src/db/database-manager.ts +++ b/src/db/database-manager.ts @@ -2055,7 +2055,24 @@ export class DatabaseManager { } private static async migrateLegacyNormalizedTables(): Promise { - const messages = await DatabaseManager.getAllMessages(); + // Do not call getAllMessages() here: it awaits DatabaseManager.ready, which + // is the promise currently waiting on ensureSchema(). That creates a + // self-deadlock during startup migrations. + const messages = await DatabaseManager.query(` + SELECT + "id", + "chatId", + "replyToMessageId", + "fromId", + "text", + "quoteText", + "date", + "deletedByBotAt", + "attachments", + "pipelineAudit" + FROM "messages" + ORDER BY "chatId", "id" + `); const attachments = messages.flatMap(message => DatabaseManager.attachmentRowsFromMessageRow(message)); const artifacts = messages.flatMap(message => DatabaseManager.artifactRowsFromMessageRow(message)); const requestAudits = messages.flatMap(message => DatabaseManager.requestAuditRowsFromMessageRow(message));