diff --git a/apps/server/src/scheduledTasks/ScheduledTaskService.ts b/apps/server/src/scheduledTasks/ScheduledTaskService.ts index afeb73de3df96..433959cd0ccae 100644 --- a/apps/server/src/scheduledTasks/ScheduledTaskService.ts +++ b/apps/server/src/scheduledTasks/ScheduledTaskService.ts @@ -334,9 +334,8 @@ function requireFutureOnce( } function errorMessage(error: unknown): string { - if (Cause.isCause(error)) return Cause.pretty(error); - if (error instanceof Error) return error.message; - return String(error); + const failure = Cause.isCause(error) ? Cause.squash(error) : error; + return failure instanceof Error ? failure.message : String(failure); } function webhookPath(taskId: string, token: string): string { diff --git a/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts b/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts index 6303b38c05ce6..90d2ccc329cbf 100644 --- a/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts +++ b/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts @@ -1399,6 +1399,7 @@ it.effect("start failures release both replay keys and relay claims for redelive yield* Queue.take(launches); assert.equal((yield* sql`SELECT * FROM scheduled_task_webhook_replay_keys`).length, 0); assert.equal((yield* sql`SELECT * FROM scheduled_task_webhook_relay_deliveries`).length, 0); + assert.equal((yield* service.list()).tasks[0]!.lastRunError, "injected start failure"); const retry = yield* waitForSpan( service.triggerWebhook(request), "ScheduledTaskService.runWebhookDelivery",