mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver/api/snap: exclude orphaned defragmentation files in snapNames
ref. https://github.com/etcd-io/etcd/pull/11900 Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
This commit is contained in:
parent
4079deadb4
commit
f1ea03a7c8
@ -243,7 +243,8 @@ func (s *Snapshotter) snapNames() ([]string, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = s.cleanupSnapdir(names); err != nil {
|
||||
names, err = s.cleanupSnapdir(names)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
snaps := checkSuffix(s.lg, names)
|
||||
@ -276,7 +277,7 @@ func checkSuffix(lg *zap.Logger, names []string) []string {
|
||||
|
||||
// cleanupSnapdir removes any files that should not be in the snapshot directory:
|
||||
// - db.tmp prefixed files that can be orphaned by defragmentation
|
||||
func (s *Snapshotter) cleanupSnapdir(filenames []string) error {
|
||||
func (s *Snapshotter) cleanupSnapdir(filenames []string) (names []string, err error) {
|
||||
for _, filename := range filenames {
|
||||
if strings.HasPrefix(filename, "db.tmp") {
|
||||
if s.lg != nil {
|
||||
@ -285,11 +286,13 @@ func (s *Snapshotter) cleanupSnapdir(filenames []string) error {
|
||||
plog.Infof("found orphaned defragmentation file; deleting: %s", filename)
|
||||
}
|
||||
if rmErr := os.Remove(filepath.Join(s.dir, filename)); rmErr != nil && !os.IsNotExist(rmErr) {
|
||||
return fmt.Errorf("failed to remove orphaned .snap.db file %s: %v", filename, rmErr)
|
||||
return nil, fmt.Errorf("failed to remove orphaned .snap.db file %s: %v", filename, rmErr)
|
||||
}
|
||||
continue
|
||||
}
|
||||
names = append(names, filename)
|
||||
}
|
||||
return nil
|
||||
return names, nil
|
||||
}
|
||||
|
||||
func (s *Snapshotter) ReleaseSnapDBs(snap raftpb.Snapshot) error {
|
||||
|
Loading…
x
Reference in New Issue
Block a user