Skip to content

Commit 52aafac

Browse files
committed
fix: snapshot
1 parent 36644b2 commit 52aafac

File tree

2 files changed

+21
-26
lines changed

2 files changed

+21
-26
lines changed

coderd/notifications/reports/generator.go

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
113113
return statsRows[i].TemplateName < statsRows[j].TemplateName
114114
})
115115

116+
reportRecipients := map[uuid.UUID]bool{}
116117
for _, stats := range statsRows {
117118
var failedBuilds []database.GetFailedWorkspaceBuildsByTemplateIDRow
118119
reportData := map[string]any{}
@@ -143,32 +144,19 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
143144
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
144145
})
145146
if err != nil && !xerrors.Is(err, sql.ErrNoRows) { // sql.ErrNoRows: report not generated yet
146-
return xerrors.Errorf("unable to get recent report generator log for user: %w", err)
147+
logger.Error(ctx, "unable to get recent report generator log for user", slog.F("user_id", templateAdmin.ID), slog.Error(err))
148+
continue
147149
}
148150

149151
if !reportLog.LastGeneratedAt.IsZero() && reportLog.LastGeneratedAt.Add(failedWorkspaceBuildsReportFrequencyDays*24*time.Hour).After(now) {
150152
// report generated recently, no need to send it now
151-
err = db.UpsertReportGeneratorLog(ctx, database.UpsertReportGeneratorLogParams{
152-
UserID: templateAdmin.ID,
153-
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
154-
LastGeneratedAt: dbtime.Time(now).UTC(),
155-
})
156-
if err != nil {
157-
logger.Error(ctx, "unable to update report generator logs", slog.F("template_id", stats.TemplateID), slog.F("user_id", templateAdmin.ID), slog.F("failed_builds", len(failedBuilds)), slog.Error(err))
158-
}
153+
reportRecipients[templateAdmin.ID] = true
159154
continue
160155
}
161156

162157
if len(failedBuilds) == 0 {
163158
// no failed workspace builds, no need to send the report
164-
err = db.UpsertReportGeneratorLog(ctx, database.UpsertReportGeneratorLogParams{
165-
UserID: templateAdmin.ID,
166-
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
167-
LastGeneratedAt: dbtime.Time(now).UTC(),
168-
})
169-
if err != nil {
170-
logger.Error(ctx, "unable to update report generator logs", slog.F("template_id", stats.TemplateID), slog.F("user_id", templateAdmin.ID), slog.F("failed_builds", len(failedBuilds)), slog.Error(err))
171-
}
159+
reportRecipients[templateAdmin.ID] = true
172160
continue
173161
}
174162

@@ -188,16 +176,18 @@ func reportFailedWorkspaceBuilds(ctx context.Context, logger slog.Logger, db dat
188176
); err != nil {
189177
logger.Warn(ctx, "failed to send a report with failed workspace builds", slog.Error(err))
190178
}
179+
reportRecipients[templateAdmin.ID] = true
180+
}
181+
}
191182

192-
err = db.UpsertReportGeneratorLog(ctx, database.UpsertReportGeneratorLogParams{
193-
UserID: templateAdmin.ID,
194-
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
195-
LastGeneratedAt: dbtime.Time(now).UTC(),
196-
})
197-
if err != nil {
198-
logger.Error(ctx, "unable to update report generator logs", slog.F("template_id", stats.TemplateID), slog.F("user_id", templateAdmin.ID), slog.F("failed_builds", len(failedBuilds)), slog.Error(err))
199-
continue
200-
}
183+
for recipient := range reportRecipients {
184+
err = db.UpsertReportGeneratorLog(ctx, database.UpsertReportGeneratorLogParams{
185+
UserID: recipient,
186+
NotificationTemplateID: notifications.TemplateWorkspaceBuildsFailedReport,
187+
LastGeneratedAt: dbtime.Time(now).UTC(),
188+
})
189+
if err != nil {
190+
logger.Error(ctx, "unable to update report generator logs", slog.F("user_id", recipient), slog.Error(err))
201191
}
202192
}
203193

coderd/notifications/reports/generator_internal_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ func TestReportFailedWorkspaceBuilds(t *testing.T) {
191191
t.Parallel()
192192
// TODO
193193
})
194+
195+
t.Run("FreshTemplate_FailedBuilds_TemplateAdminIn_NoReport", func(t *testing.T) {
196+
t.Parallel()
197+
// TODO
198+
})
194199
}
195200

196201
func setup(t *testing.T) (context.Context, slog.Logger, database.Store, pubsub.Pubsub, *testutil.FakeNotificationsEnqueuer, *quartz.Mock) {

0 commit comments

Comments
 (0)