skip retrying on invalid block errors

This commit is contained in:
nicktrn
2024-09-24 19:42:50 +01:00
parent b224c79ecc
commit 6327be82de
@@ -73,6 +73,8 @@ type FoundAlert = Prisma.Result<
>;
};
class SkipRetryError extends Error {}
export class DeliverAlertService extends BaseService {
public async call(alertId: string) {
const alert: FoundAlert | null = await this._prisma.projectAlert.findFirst({
@@ -136,22 +138,34 @@ export class DeliverAlertService extends BaseService {
alert.failedAttempt = finishedAttempt;
}
switch (alert.channel.type) {
case "EMAIL": {
await this.#sendEmail(alert);
break;
try {
switch (alert.channel.type) {
case "EMAIL": {
await this.#sendEmail(alert);
break;
}
case "SLACK": {
await this.#sendSlack(alert);
break;
}
case "WEBHOOK": {
await this.#sendWebhook(alert);
break;
}
default: {
assertNever(alert.channel.type);
}
}
case "SLACK": {
await this.#sendSlack(alert);
break;
}
case "WEBHOOK": {
await this.#sendWebhook(alert);
break;
}
default: {
assertNever(alert.channel.type);
} catch (error) {
if (error instanceof SkipRetryError) {
logger.error("[DeliverAlert] Skipping retry", {
reason: error.message,
});
return;
}
throw error;
}
await this._prisma.projectAlert.update({
@@ -1012,6 +1026,14 @@ export class DeliverAlertService extends BaseService {
message,
});
if (error.data.error === "invalid_blocks") {
logger.error("[DeliverAlert] Slack invalid blocks", {
error,
});
throw new SkipRetryError("Slack invalid blocks");
}
throw new Error("Slack platform error");
}