From c63ef67c2c90abb9afa03c2c76d4520c35f81e6c Mon Sep 17 00:00:00 2001 From: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com> Date: Thu, 5 Mar 2026 16:18:38 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/job/db_cleanup_job.go | 4 +--- backend/internal/job/scheduler.go | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/backend/internal/job/db_cleanup_job.go b/backend/internal/job/db_cleanup_job.go index 4d184d6f..9c39af81 100644 --- a/backend/internal/job/db_cleanup_job.go +++ b/backend/internal/job/db_cleanup_job.go @@ -19,9 +19,7 @@ import ( func (s *Scheduler) RegisterDbCleanupJobs(ctx context.Context, db *gorm.DB) error { jobs := &DbCleanupJobs{db: db} - // Use exponential backoff for each DB cleanup job so transient query failures - // are retried automatically rather than causing an immediate job failure. - // Each job gets its own backoff instance to avoid shared state. + // Use exponential backoff for each DB cleanup job so transient query failures are retried automatically rather than causing an immediate job failure return errors.Join( s.RegisterJob(ctx, "ClearWebauthnSessions", jobDefWithJitter(24*time.Hour), jobs.clearWebauthnSessions, service.RegisterJobOpts{RunImmediately: true, BackOff: backoff.NewExponentialBackOff()}), s.RegisterJob(ctx, "ClearOneTimeAccessTokens", jobDefWithJitter(24*time.Hour), jobs.clearOneTimeAccessTokens, service.RegisterJobOpts{RunImmediately: true, BackOff: backoff.NewExponentialBackOff()}), diff --git a/backend/internal/job/scheduler.go b/backend/internal/job/scheduler.go index bbfaef50..2ef2019b 100644 --- a/backend/internal/job/scheduler.go +++ b/backend/internal/job/scheduler.go @@ -65,7 +65,7 @@ func (s *Scheduler) Run(ctx context.Context) error { } func (s *Scheduler) RegisterJob(ctx context.Context, name string, def gocron.JobDefinition, jobFn func(ctx context.Context) error, opts service.RegisterJobOpts) error { - // If a BackOff strategy is provided, wrap the job with retry logic. + // If a BackOff strategy is provided, wrap the job with retry logic if opts.BackOff != nil { origJob := jobFn jobFn = func(ctx context.Context) error { @@ -75,7 +75,6 @@ func (s *Scheduler) RegisterJob(ctx context.Context, name string, def gocron.Job return struct{}{}, origJob(ctx) }, backoff.WithBackOff(opts.BackOff), - backoff.WithMaxTries(3), backoff.WithNotify(func(err error, d time.Duration) { slog.WarnContext(ctx, "Job failed, retrying", slog.String("name", name),