From bba49ea447acf317915c368d6cf7bcfacda8efdd Mon Sep 17 00:00:00 2001 From: Derek Nola Date: Mon, 19 Jul 2021 14:30:57 -0700 Subject: [PATCH] Fix to allow prune to correctly cleanup custom named snapshots (#3649) Signed-off-by: dereknola --- pkg/etcd/etcd.go | 9 ++++----- pkg/etcd/s3.go | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pkg/etcd/etcd.go b/pkg/etcd/etcd.go index b303d6ce3e..f9425eea62 100644 --- a/pkg/etcd/etcd.go +++ b/pkg/etcd/etcd.go @@ -41,7 +41,6 @@ import ( ) const ( - snapshotPrefix = "etcd-snapshot-" endpoint = "https://127.0.0.1:2379" testTimeout = time.Second * 10 manageTickerTime = time.Second * 15 @@ -854,7 +853,7 @@ func (e *ETCD) Snapshot(ctx context.Context, config *config.Control) error { // check if we need to perform a retention check if e.config.EtcdSnapshotRetention >= 1 { - if err := snapshotRetention(e.config.EtcdSnapshotRetention, snapshotDir); err != nil { + if err := snapshotRetention(e.config.EtcdSnapshotRetention, e.config.EtcdSnapshotName, snapshotDir); err != nil { return errors.Wrap(err, "failed to apply snapshot retention") } } @@ -986,7 +985,7 @@ func (e *ETCD) PruneSnapshots(ctx context.Context) error { return e.s3.snapshotRetention(ctx) } - return snapshotRetention(e.config.EtcdSnapshotRetention, snapshotDir) + return snapshotRetention(e.config.EtcdSnapshotRetention, e.config.EtcdSnapshotName, snapshotDir) } // ListSnapshots is an exported wrapper method that wraps an @@ -1206,7 +1205,7 @@ func (e *ETCD) Restore(ctx context.Context) error { // snapshotRetention iterates through the snapshots and removes the oldest // leaving the desired number of snapshots. -func snapshotRetention(retention int, snapshotDir string) error { +func snapshotRetention(retention int, snapshotPrefix string, snapshotDir string) error { nodeName := os.Getenv("NODE_NAME") var snapshotFiles []os.FileInfo @@ -1214,7 +1213,7 @@ func snapshotRetention(retention int, snapshotDir string) error { if err != nil { return err } - if strings.HasPrefix(info.Name(), snapshotPrefix+nodeName) { + if strings.HasPrefix(info.Name(), snapshotPrefix+"-"+nodeName) { snapshotFiles = append(snapshotFiles, info) } return nil diff --git a/pkg/etcd/s3.go b/pkg/etcd/s3.go index a9e61317c4..5f7a93456a 100644 --- a/pkg/etcd/s3.go +++ b/pkg/etcd/s3.go @@ -157,7 +157,7 @@ func (s *S3) Download(ctx context.Context) error { // naming of the snapshots. func (s *S3) snapshotPrefix() string { nodeName := os.Getenv("NODE_NAME") - fullSnapshotPrefix := snapshotPrefix + nodeName + fullSnapshotPrefix := s.config.EtcdSnapshotName + "-" + nodeName var prefix string if s.config.EtcdS3Folder != "" { prefix = filepath.Join(s.config.EtcdS3Folder, fullSnapshotPrefix)