Merge pull request #47110 from corhere/backport-23.0/lock-container-when-deleting-root
[23.0 backport] Lock container when deleting its root directory
This commit is contained in:
commit
190138d0ec
1 changed files with 8 additions and 1 deletions
|
@ -138,7 +138,14 @@ func (daemon *Daemon) cleanupContainer(container *container.Container, config ty
|
|||
container.RWLayer = nil
|
||||
}
|
||||
|
||||
if err := containerfs.EnsureRemoveAll(container.Root); err != nil {
|
||||
// Hold the container lock while deleting the container root directory
|
||||
// so that other goroutines don't attempt to concurrently open files
|
||||
// within it. Having any file open on Windows (without the
|
||||
// FILE_SHARE_DELETE flag) will block it from being deleted.
|
||||
container.Lock()
|
||||
err := containerfs.EnsureRemoveAll(container.Root)
|
||||
container.Unlock()
|
||||
if err != nil {
|
||||
err = errors.Wrapf(err, "unable to remove filesystem for %s", container.ID)
|
||||
container.SetRemovalError(err)
|
||||
return err
|
||||
|
|
Loading…
Reference in a new issue