From 2683d31ad80661a7e06637b0ef4c387894c193bd Mon Sep 17 00:00:00 2001 From: Omar Polo Date: Fri, 8 May 2026 15:37:55 +0000 Subject: [PATCH] policies: before is now a duration adapt to the kloset change in should fix #2047 --- scheduler/tasks.go | 6 +++--- utils/config_policy.go | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/scheduler/tasks.go b/scheduler/tasks.go index 465be0035..d0cf58789 100644 --- a/scheduler/tasks.go +++ b/scheduler/tasks.go @@ -5,10 +5,10 @@ import ( "fmt" "time" + "github.com/PlakarKorp/kloset/connectors/storage" "github.com/PlakarKorp/kloset/encryption" "github.com/PlakarKorp/kloset/locate" "github.com/PlakarKorp/kloset/repository" - "github.com/PlakarKorp/kloset/connectors/storage" "github.com/PlakarKorp/kloset/versioning" "github.com/PlakarKorp/plakar/cached" "github.com/PlakarKorp/plakar/subcommands/backup" @@ -92,7 +92,7 @@ func (s *Scheduler) backupTask(taskset Task, task BackupConfig) { continue } - rmSubcommand.LocateOptions.Filters.Before = time.Now().Add(-task.Retention) + rmSubcommand.LocateOptions.Filters.Before = task.Retention retval, err := ptask.RunCommand(s.ctx, rmSubcommand, repo, "@scheduler") if err != nil || retval != 0 { s.ctx.GetLogger().Error("Error removing obsolete backups: %s", err) @@ -285,7 +285,7 @@ func (s *Scheduler) maintenanceTask(task MaintenanceConfig) { continue } - rmSubcommand.LocateOptions.Filters.Before = time.Now().Add(-task.Retention) + rmSubcommand.LocateOptions.Filters.Before = task.Retention retval, err := ptask.RunCommand(s.ctx, rmSubcommand, repo, "@scheduler") if err != nil || retval != 0 { s.ctx.GetLogger().Error("Error removing obsolete backups: %s", err) diff --git a/utils/config_policy.go b/utils/config_policy.go index 000738fc5..3d4eca7fd 100644 --- a/utils/config_policy.go +++ b/utils/config_policy.go @@ -49,6 +49,15 @@ func (c *policiesConfig) setTime(value string, p *time.Time) error { return nil } +func (c *policiesConfig) setDuration(value string, p *time.Duration) error { + t, err := locate.ParseDurationFlag(value) + if err != nil { + return fmt.Errorf("invalid value: %w", err) + } + *p = t + return nil +} + func (c *policiesConfig) setStringList(value string, p *[]string) error { *p = strings.Split(value, ",") return nil @@ -154,6 +163,8 @@ func (c *policiesConfig) Set(name string, key string, value string) error { return c.setInt(value, p) case *time.Time: return c.setTime(value, p) + case *time.Duration: + return c.setDuration(value, p) case *string: *p = value return nil