Merge pull request #2232 from tedyu/rm-persist-dir

vc: Clean up directories in case MkdirAll fails
This commit is contained in:
Archana Shinde 2019-11-21 15:42:23 -08:00 committed by GitHub
commit db696da98b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -126,12 +126,22 @@ func (fs *FS) ToDisk(ss persistapi.SandboxState, cs map[string]persistapi.Contai
return err
}
var dirCreationErr error
var createdDirs []string
defer func() {
if dirCreationErr != nil && len(createdDirs) > 0 {
for _, dir := range createdDirs {
os.RemoveAll(dir)
}
}
}()
// persist container configuration data
for cid, cstate := range fs.containerState {
cdir := filepath.Join(sandboxDir, cid)
if err := os.MkdirAll(cdir, dirMode); err != nil {
return err
if dirCreationErr = os.MkdirAll(cdir, dirMode); dirCreationErr != nil {
return dirCreationErr
}
createdDirs = append(createdDirs, cdir)
cfile := filepath.Join(cdir, persistFile)
cf, err := os.OpenFile(cfile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, fileMode)