@@ -73,6 +73,8 @@ type FoundAlert = Prisma.Result<
7373  > ; 
7474} ; 
7575
76+ class  SkipRetryError  extends  Error  { } 
77+ 
7678export  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