From deff200c90606564d8b7a6fad3e8334f4d40d848 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 30 Jan 2018 15:01:45 -0800 Subject: [PATCH] daemon.cleanupContainer: nullify container RWLayer upon release ReleaseRWLayer can and should only be called once (unless it returns an error), but might be called twice in case of a failure from `system.EnsureRemoveAll(container.Root)`. This results in the following error: > Error response from daemon: driver "XXX" failed to remove root filesystem for YYY: layer not retained The obvious fix is to set container.RWLayer to nil as soon as ReleaseRWLayer() succeeds. Signed-off-by: Kir Kolyshkin (cherry picked from commit e9b9e4ace294230c6b8eb010eda564a2541c4564) Signed-off-by: Sebastiaan van Stijn --- components/engine/daemon/delete.go | 1 + 1 file changed, 1 insertion(+) diff --git a/components/engine/daemon/delete.go b/components/engine/daemon/delete.go index 4d56d14529..525e95873b 100644 --- a/components/engine/daemon/delete.go +++ b/components/engine/daemon/delete.go @@ -124,6 +124,7 @@ func (daemon *Daemon) cleanupContainer(container *container.Container, forceRemo container.SetRemovalError(e) return e } + container.RWLayer = nil } if err := system.EnsureRemoveAll(container.Root); err != nil {