From b2f7c846788e5160c2d826291ff784b6b33c15be Mon Sep 17 00:00:00 2001 From: Paul van Santen Date: Tue, 23 Jul 2024 09:54:53 +0200 Subject: [PATCH] If property becomes unset during process, skip the dataset --- job/snapshots_create.go | 4 ++++ job/snapshots_mark.go | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/job/snapshots_create.go b/job/snapshots_create.go index b0eab05..885e787 100644 --- a/job/snapshots_create.go +++ b/job/snapshots_create.go @@ -74,6 +74,10 @@ func (r *Runner) createDatasetSnapshot(ds *zfs.Dataset) error { }() intervalMinsProp := r.config.Properties.snapshotIntervalMinutes() + if !propertyIsSet(ds.ExtraProps[intervalMinsProp]) { + return nil // Not set (anymore), skip + } + intervalMins, err := strconv.ParseInt(ds.ExtraProps[intervalMinsProp], 10, 64) if err != nil { return fmt.Errorf("error parsing %s property on %s: %w", intervalMinsProp, ds.Name, err) diff --git a/job/snapshots_mark.go b/job/snapshots_mark.go index 4258b41..7a0f816 100644 --- a/job/snapshots_mark.go +++ b/job/snapshots_mark.go @@ -49,6 +49,10 @@ func (r *Runner) markPrunableExcessSnapshots() error { return fmt.Errorf("error retrieving count retention dataset %s: %w", dataset, err) } + if !propertyIsSet(ds.ExtraProps[countProp]) { + continue // Not set (anymore), skip + } + retentionCount, err := parseDatasetIntProperty(ds, countProp) if err != nil { return fmt.Errorf("error parsing %s property on %s: %w", countProp, dataset, err) @@ -180,6 +184,10 @@ func (r *Runner) markPrunableSnapshotsByAge() error { return fmt.Errorf("error retrieving time retention dataset %s: %w", dataset, err) } + if !propertyIsSet(ds.ExtraProps[retentionProp]) { + continue // Not set (anymore), skip + } + retentionMinutes, err := parseDatasetIntProperty(ds, retentionProp) if err != nil { return fmt.Errorf("error parsing %s property on %s: %w", retentionProp, dataset, err)