diff --git a/apps/webapp/app/v3/services/crashTaskRun.server.ts b/apps/webapp/app/v3/services/crashTaskRun.server.ts index e59fcdfe0..2775ff9ab 100644 --- a/apps/webapp/app/v3/services/crashTaskRun.server.ts +++ b/apps/webapp/app/v3/services/crashTaskRun.server.ts @@ -6,6 +6,7 @@ import { logger } from "~/services/logger.server"; import { AuthenticatedEnvironment } from "~/services/apiAuth.server"; import { ResumeTaskRunDependenciesService } from "./resumeTaskRunDependencies.server"; import { CRASHABLE_ATTEMPT_STATUSES, isCrashableRunStatus } from "../taskStatus"; +import { sanitizeError } from "@trigger.dev/core/v3"; export type CrashTaskRunServiceOptions = { reason?: string; @@ -111,7 +112,11 @@ export class CrashTaskRunService extends BaseService { attempt, crashedTaskRun, new Date(), - crashedTaskRun.runtimeEnvironment + crashedTaskRun.runtimeEnvironment, + { + reason: opts.reason, + logs: opts.logs, + } ); } } @@ -120,7 +125,11 @@ export class CrashTaskRunService extends BaseService { attempt: TaskRunAttempt, run: TaskRun, failedAt: Date, - environment: AuthenticatedEnvironment + environment: AuthenticatedEnvironment, + error: { + reason: string; + logs?: string; + } ) { return await this.traceWithEnv("failAttempt()", environment, async (span) => { span.setAttribute("taskRunId", run.id); @@ -135,6 +144,12 @@ export class CrashTaskRunService extends BaseService { data: { status: "FAILED", completedAt: failedAt, + error: sanitizeError({ + type: "INTERNAL_ERROR", + code: "TASK_RUN_CRASHED", + message: error.reason, + stackTrace: error.logs, + }), }, }); diff --git a/packages/core/src/v3/schemas/common.ts b/packages/core/src/v3/schemas/common.ts index 811c93d71..f0964cc8a 100644 --- a/packages/core/src/v3/schemas/common.ts +++ b/packages/core/src/v3/schemas/common.ts @@ -89,6 +89,7 @@ export const TaskRunErrorCodes = { TASK_OUTPUT_ERROR: "TASK_OUTPUT_ERROR", HANDLE_ERROR_ERROR: "HANDLE_ERROR_ERROR", GRACEFUL_EXIT_TIMEOUT: "GRACEFUL_EXIT_TIMEOUT", + TASK_RUN_CRASHED: "TASK_RUN_CRASHED", } as const; export const TaskRunInternalError = z.object({ @@ -107,6 +108,7 @@ export const TaskRunInternalError = z.object({ "HANDLE_ERROR_ERROR", "GRACEFUL_EXIT_TIMEOUT", "TASK_RUN_HEARTBEAT_TIMEOUT", + "TASK_RUN_CRASHED", ]), message: z.string().optional(), stackTrace: z.string().optional(),