Merge pull request #3293 from crosbymichael/atomic-delete
Improve atomic delete
This commit is contained in:
commit
30082abed3
@ -179,6 +179,9 @@ func atomicDelete(path string) error {
|
|||||||
// create a hidden dir for an atomic removal
|
// create a hidden dir for an atomic removal
|
||||||
atomicPath := filepath.Join(filepath.Dir(path), fmt.Sprintf(".%s", filepath.Base(path)))
|
atomicPath := filepath.Join(filepath.Dir(path), fmt.Sprintf(".%s", filepath.Base(path)))
|
||||||
if err := os.Rename(path, atomicPath); err != nil {
|
if err := os.Rename(path, atomicPath); err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return os.RemoveAll(atomicPath)
|
return os.RemoveAll(atomicPath)
|
||||||
|
@ -330,6 +330,10 @@ func (r *Runtime) loadTasks(ctx context.Context, ns string) ([]*Task, error) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
id := path.Name()
|
id := path.Name()
|
||||||
|
// skip hidden directories
|
||||||
|
if len(id) > 0 && id[0] == '.' {
|
||||||
|
continue
|
||||||
|
}
|
||||||
bundle := loadBundle(
|
bundle := loadBundle(
|
||||||
id,
|
id,
|
||||||
filepath.Join(r.state, ns, id),
|
filepath.Join(r.state, ns, id),
|
||||||
|
@ -134,6 +134,9 @@ func atomicDelete(path string) error {
|
|||||||
// create a hidden dir for an atomic removal
|
// create a hidden dir for an atomic removal
|
||||||
atomicPath := filepath.Join(filepath.Dir(path), fmt.Sprintf(".%s", filepath.Base(path)))
|
atomicPath := filepath.Join(filepath.Dir(path), fmt.Sprintf(".%s", filepath.Base(path)))
|
||||||
if err := os.Rename(path, atomicPath); err != nil {
|
if err := os.Rename(path, atomicPath); err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return os.RemoveAll(atomicPath)
|
return os.RemoveAll(atomicPath)
|
||||||
|
@ -214,6 +214,10 @@ func (m *TaskManager) loadTasks(ctx context.Context) error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
id := sd.Name()
|
id := sd.Name()
|
||||||
|
// skip hidden directories
|
||||||
|
if len(id) > 0 && id[0] == '.' {
|
||||||
|
continue
|
||||||
|
}
|
||||||
bundle, err := LoadBundle(ctx, m.state, id)
|
bundle, err := LoadBundle(ctx, m.state, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// fine to return error here, it is a programmer error if the context
|
// fine to return error here, it is a programmer error if the context
|
||||||
|
Loading…
Reference in New Issue
Block a user