From e9b9e4ace294230c6b8eb010eda564a2541c4564 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 --- daemon/delete.go | 1 + 1 file changed, 1 insertion(+) diff --git a/daemon/delete.go b/daemon/delete.go index f16d38beb3..c6f8efec45 100644 --- a/daemon/delete.go +++ b/daemon/delete.go @@ -128,6 +128,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 {