From d91d3bd056cfd35bfc40ba8a3b4b615d41a69c9e Mon Sep 17 00:00:00 2001 From: Dotta Date: Fri, 14 Aug 2026 20:18:43 +0000 Subject: [PATCH] fix(apps): keep draft edits on locked transaction Co-Authored-By: Paperclip --- server/src/services/tool-access.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/src/services/tool-access.ts b/server/src/services/tool-access.ts index 32babdd0f77..78df25c0f5b 100644 --- a/server/src/services/tool-access.ts +++ b/server/src/services/tool-access.ts @@ -169,6 +169,7 @@ type ToolAccessServiceOptions = { deploymentExposure?: DeploymentExposure; trustedLocalStdioRuntimeHost?: string | null; now?: () => Date; + appDraftEditLockHeld?: boolean; }; type DbTransaction = Parameters[0]>[0]; @@ -4825,12 +4826,15 @@ export function toolAccessService(db: Db, options: ToolAccessServiceOptions = {} input: ConnectToolApp, actor?: ActorInfo, ): Promise { - if (input.connectionId) { + if (input.connectionId && !options.appDraftEditLockHeld) { return db.transaction(async (tx) => { await tx.execute( sql`select pg_advisory_xact_lock(hashtextextended(${`tool_app_draft_edit:${companyId}:${input.connectionId}`}, 0))`, ); - return connectGalleryAppLocked(companyId, input, actor); + return toolAccessService(tx as unknown as Db, { + ...options, + appDraftEditLockHeld: true, + }).connectGalleryApp(companyId, input, actor); }); } return connectGalleryAppLocked(companyId, input, actor);