refac: atomic merge, lost-update race, RunPurge cost, duplicated walks

This commit is contained in:
Florian Sylvain committed 2026-10-21 22:47:46 +02:00
1 parent 0fc3511e2b
commit 074944c99a
45 files changed
+2204 -267

No files matched your search

@@ -9,7 +9,7 @@ import (
)
type PurgeRunner interface {
Execute(fingerprint *string) (purge.RunResult, error)
Execute(ctx context.Context, fingerprint *string) (purge.RunResult, error)
}
type PurgeSchedulerUseCase struct {
@@ -22,7 +22,7 @@ func NewPurgeSchedulerUseCase(repository purge.Repository, runner PurgeRunner, r
return &PurgeSchedulerUseCase{repository, runner, recorder}
}
func (u *PurgeSchedulerUseCase) Tick(now time.Time) (purge.RunResult, bool, error) {
func (u *PurgeSchedulerUseCase) Tick(ctx context.Context, now time.Time) (purge.RunResult, bool, error) {
settings, err := u.repository.Get()
if err != nil {
return purge.RunResult{}, false, err
@@ -31,7 +31,7 @@ func (u *PurgeSchedulerUseCase) Tick(now time.Time) (purge.RunResult, bool, erro
if next == nil || now.Before(*next) {
return purge.RunResult{}, false, nil
}
result, err := u.runner.Execute(nil)
result, err := u.runner.Execute(ctx, nil)
if err != nil {
u.recordFailedRun(err)
return purge.RunResult{}, false, err