Skip to content

Commit 6327be8

Browse files
committed
skip retrying on invalid block errors
1 parent b224c79 commit 6327be8

File tree

1 file changed

+36
-14
lines changed

1 file changed

+36
-14
lines changed

apps/webapp/app/v3/services/alerts/deliverAlert.server.ts

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ type FoundAlert = Prisma.Result<
7373
>;
7474
};
7575

76+
class SkipRetryError extends Error {}
77+
7678
export class DeliverAlertService extends BaseService {
7779
public async call(alertId: string) {
7880
const alert: FoundAlert | null = await this._prisma.projectAlert.findFirst({
@@ -136,22 +138,34 @@ export class DeliverAlertService extends BaseService {
136138
alert.failedAttempt = finishedAttempt;
137139
}
138140

139-
switch (alert.channel.type) {
140-
case "EMAIL": {
141-
await this.#sendEmail(alert);
142-
break;
143-
}
144-
case "SLACK": {
145-
await this.#sendSlack(alert);
146-
break;
147-
}
148-
case "WEBHOOK": {
149-
await this.#sendWebhook(alert);
150-
break;
141+
try {
142+
switch (alert.channel.type) {
143+
case "EMAIL": {
144+
await this.#sendEmail(alert);
145+
break;
146+
}
147+
case "SLACK": {
148+
await this.#sendSlack(alert);
149+
break;
150+
}
151+
case "WEBHOOK": {
152+
await this.#sendWebhook(alert);
153+
break;
154+
}
155+
default: {
156+
assertNever(alert.channel.type);
157+
}
151158
}
152-
default: {
153-
assertNever(alert.channel.type);
159+
} catch (error) {
160+
if (error instanceof SkipRetryError) {
161+
logger.error("[DeliverAlert] Skipping retry", {
162+
reason: error.message,
163+
});
164+
165+
return;
154166
}
167+
168+
throw error;
155169
}
156170

157171
await this._prisma.projectAlert.update({
@@ -1012,6 +1026,14 @@ export class DeliverAlertService extends BaseService {
10121026
message,
10131027
});
10141028

1029+
if (error.data.error === "invalid_blocks") {
1030+
logger.error("[DeliverAlert] Slack invalid blocks", {
1031+
error,
1032+
});
1033+
1034+
throw new SkipRetryError("Slack invalid blocks");
1035+
}
1036+
10151037
throw new Error("Slack platform error");
10161038
}
10171039

0 commit comments

Comments
 (0)