From ba7b7a9b27c70a787cec2b6670fbb1289bd18eb4 Mon Sep 17 00:00:00 2001 From: Dotta Date: Thu, 9 Jul 2026 17:45:51 +0000 Subject: [PATCH] Stabilize heartbeat suppression cleanup Co-Authored-By: Paperclip --- .../heartbeat-worktree-suppression.test.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server/src/__tests__/heartbeat-worktree-suppression.test.ts b/server/src/__tests__/heartbeat-worktree-suppression.test.ts index 58daa176c5a..3a3144dcef1 100644 --- a/server/src/__tests__/heartbeat-worktree-suppression.test.ts +++ b/server/src/__tests__/heartbeat-worktree-suppression.test.ts @@ -38,19 +38,23 @@ describeEmbeddedPostgres("heartbeat worktree suppression", () => { let db!: ReturnType; let tempDb: Awaited> | null = null; - function isHeartbeatRunEventFkError(error: unknown) { + function isHeartbeatRunDependentFkError(error: unknown) { const message = error instanceof Error ? `${error.message} ${String(error.cause ?? "")}` : String(error); - return message.includes("heartbeat_run_events_run_id_heartbeat_runs_id_fk"); + return ( + message.includes("heartbeat_run_events_run_id_heartbeat_runs_id_fk") || + message.includes("activity_log_run_id_heartbeat_runs_id_fk") + ); } - async function deleteHeartbeatRunsWithEvents() { + async function deleteHeartbeatRunsWithDependents() { for (let attempt = 0; attempt < 5; attempt += 1) { await db.delete(heartbeatRunEvents); + await db.delete(activityLog); try { await db.delete(heartbeatRuns); return; } catch (error) { - if (!isHeartbeatRunEventFkError(error) || attempt === 4) throw error; + if (!isHeartbeatRunDependentFkError(error) || attempt === 4) throw error; await new Promise((resolve) => setTimeout(resolve, 25)); } } @@ -67,7 +71,7 @@ describeEmbeddedPostgres("heartbeat worktree suppression", () => { await db.delete(documentRevisions); await db.delete(documents); await db.delete(activityLog); - await deleteHeartbeatRunsWithEvents(); + await deleteHeartbeatRunsWithDependents(); await db.delete(agentWakeupRequests); await db.delete(issues); await db.delete(agentRuntimeState);