Skip to content

Commit e419431

Browse files
committed
chore(retry): improve retry policy on fetcher
1 parent 4c5cb3d commit e419431

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

coderd/notifications/fetcher.go

+4
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@ import (
77
"text/template"
88

99
"golang.org/x/xerrors"
10+
11+
"cdr.dev/slog"
1012
)
1113

1214
func (n *notifier) fetchHelpers(ctx context.Context) (map[string]any, error) {
1315
appName, err := n.fetchAppName(ctx)
1416
if err != nil {
17+
n.log.Error(ctx, "failed to fetch app name", slog.Error(err))
1518
return nil, xerrors.Errorf("fetch app name: %w", err)
1619
}
1720
logoURL, err := n.fetchLogoURL(ctx)
1821
if err != nil {
22+
n.log.Error(ctx, "failed to fetch logo URL", slog.Error(err))
1923
return nil, xerrors.Errorf("fetch logo URL: %w", err)
2024
}
2125

coderd/notifications/notifier.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ const (
2727
notificationsDefaultAppName = "Coder"
2828
)
2929

30+
var (
31+
errFetchfailed = xerrors.New("failed to fetch helpers")
32+
)
33+
3034
// notifier is a consumer of the notifications_messages queue. It dequeues messages from that table and processes them
3135
// through a pipeline of fetch -> prepare -> render -> acquire handler -> deliver.
3236
type notifier struct {
@@ -168,7 +172,11 @@ func (n *notifier) process(ctx context.Context, success chan<- dispatchResult, f
168172
deliverFn, err := n.prepare(ctx, msg)
169173
if err != nil {
170174
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+
}
172180

173181
n.metrics.PendingUpdates.Set(float64(len(success) + len(failure)))
174182
continue
@@ -230,7 +238,7 @@ func (n *notifier) prepare(ctx context.Context, msg database.AcquireNotification
230238

231239
helpers, err := n.fetchHelpers(ctx)
232240
if err != nil {
233-
return nil, xerrors.Errorf("fetch helpers: %w", err)
241+
return nil, errFetchfailed
234242
}
235243

236244
var title, body string

0 commit comments

Comments
 (0)