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),