@@ -27,6 +27,10 @@ const (
27
27
notificationsDefaultAppName = "Coder"
28
28
)
29
29
30
+ var (
31
+ errFetchfailed = xerrors .New ("failed to fetch helpers" )
32
+ )
33
+
30
34
// notifier is a consumer of the notifications_messages queue. It dequeues messages from that table and processes them
31
35
// through a pipeline of fetch -> prepare -> render -> acquire handler -> deliver.
32
36
type notifier struct {
@@ -168,7 +172,11 @@ func (n *notifier) process(ctx context.Context, success chan<- dispatchResult, f
168
172
deliverFn , err := n .prepare (ctx , msg )
169
173
if err != nil {
170
174
n .log .Warn (ctx , "dispatcher construction failed" , slog .F ("msg_id" , msg .ID ), slog .Error (err ))
171
- failure <- n .newFailedDispatch (msg , err , false )
175
+ if xerrors .Is (err , errFetchfailed ) {
176
+ failure <- n .newFailedDispatch (msg , err , true )
177
+ } else {
178
+ failure <- n .newFailedDispatch (msg , err , false )
179
+ }
172
180
173
181
n .metrics .PendingUpdates .Set (float64 (len (success ) + len (failure )))
174
182
continue
@@ -230,7 +238,7 @@ func (n *notifier) prepare(ctx context.Context, msg database.AcquireNotification
230
238
231
239
helpers , err := n .fetchHelpers (ctx )
232
240
if err != nil {
233
- return nil , xerrors . Errorf ( "fetch helpers: %w" , err )
241
+ return nil , errFetchfailed
234
242
}
235
243
236
244
var title , body string
0 commit comments