From bd295481708ef0209a1385f637380fb2bff45922 Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Thu, 8 May 2025 19:22:14 +0100 Subject: [PATCH] We can use TaskRun error instead of attempt. Faster and works across v3/v4 --- .../v3/services/alerts/deliverAlert.server.ts | 51 +++---------------- .../alerts/performTaskRunAlerts.server.ts | 6 +-- 2 files changed, 8 insertions(+), 49 deletions(-) diff --git a/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts b/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts index 4297f6a72b..65ad55cc64 100644 --- a/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts +++ b/apps/webapp/app/v3/services/alerts/deliverAlert.server.ts @@ -34,7 +34,6 @@ import { sendAlertEmail } from "~/services/email.server"; import { logger } from "~/services/logger.server"; import { decryptSecret } from "~/services/secrets/secretStore.server"; import { commonWorker } from "~/v3/commonWorker.server"; -import { FINAL_ATTEMPT_STATUSES } from "~/v3/taskStatus"; import { BaseService } from "../baseService.server"; import { generateFriendlyId } from "~/v3/friendlyIdentifiers"; import { type ProjectAlertChannelType, type ProjectAlertType } from "@trigger.dev/database"; @@ -53,13 +52,6 @@ type FoundAlert = Prisma.Result< }; }; environment: true; - taskRunAttempt: { - include: { - taskRun: true; - backgroundWorkerTask: true; - backgroundWorker: true; - }; - }; taskRun: { include: { lockedBy: true; @@ -78,13 +70,7 @@ type FoundAlert = Prisma.Result< }; }, "findUniqueOrThrow" -> & { - failedAttempt?: Prisma.Result< - typeof prisma.taskRunAttempt, - { select: { output: true; outputType: true; error: true } }, - "findFirst" - >; -}; +>; class SkipRetryError extends Error {} @@ -100,13 +86,6 @@ export class DeliverAlertService extends BaseService { }, }, environment: true, - taskRunAttempt: { - include: { - taskRun: true, - backgroundWorkerTask: true, - backgroundWorker: true, - }, - }, taskRun: { include: { lockedBy: true, @@ -133,24 +112,6 @@ export class DeliverAlertService extends BaseService { return; } - if (alert.taskRun) { - const finishedAttempt = await this._prisma.taskRunAttempt.findFirst({ - select: { - output: true, - outputType: true, - error: true, - }, - where: { - status: { in: FINAL_ATTEMPT_STATUSES }, - taskRunId: alert.taskRun.id, - }, - orderBy: { - createdAt: "desc", - }, - }); - alert.failedAttempt = finishedAttempt; - } - try { switch (alert.channel.type) { case "EMAIL": { @@ -1014,18 +975,18 @@ export class DeliverAlertService extends BaseService { } #getRunError(alert: FoundAlert): TaskRunError { - if (alert.failedAttempt) { - const res = TaskRunError.safeParse(alert.failedAttempt.error); + if (alert.taskRun) { + const res = TaskRunError.safeParse(alert.taskRun.error); if (!res.success) { logger.error("[DeliverAlert] Failed to parse task run error, sending with unknown error", { issues: res.error.issues, - taskAttemptError: alert.failedAttempt.error, + taskRunError: alert.taskRun.error, }); return { type: "CUSTOM_ERROR", - raw: JSON.stringify(alert.failedAttempt.error ?? "Unknown error"), + raw: JSON.stringify(alert.taskRun.error ?? "Unknown error"), }; } @@ -1034,7 +995,7 @@ export class DeliverAlertService extends BaseService { return { type: "CUSTOM_ERROR", - raw: "No error on attempt", + raw: "No error on run", }; } diff --git a/apps/webapp/app/v3/services/alerts/performTaskRunAlerts.server.ts b/apps/webapp/app/v3/services/alerts/performTaskRunAlerts.server.ts index 6712392d08..370dd34c7c 100644 --- a/apps/webapp/app/v3/services/alerts/performTaskRunAlerts.server.ts +++ b/apps/webapp/app/v3/services/alerts/performTaskRunAlerts.server.ts @@ -1,10 +1,8 @@ import { type Prisma, type ProjectAlertChannel } from "@trigger.dev/database"; -import { $transaction, type PrismaClientOrTransaction, type prisma } from "~/db.server"; -import { workerQueue } from "~/services/worker.server"; -import { generateFriendlyId } from "~/v3/friendlyIdentifiers"; +import { type prisma } from "~/db.server"; +import { commonWorker } from "~/v3/commonWorker.server"; import { BaseService } from "../baseService.server"; import { DeliverAlertService } from "./deliverAlert.server"; -import { commonWorker } from "~/v3/commonWorker.server"; type FoundRun = Prisma.Result< typeof prisma.taskRun,