From 5e5e07e10619eef14c3c9859e28a1c9e46e08a50 Mon Sep 17 00:00:00 2001 From: mYmNeo Date: Tue, 5 Apr 2016 09:30:05 +0800 Subject: [PATCH] when container had no layer data, cleanupContainer crashed Signed-off-by: mYmNeo (cherry picked from commit 0bfc9c8de07cb2ad716d522952b2901080161909) --- daemon/delete.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/daemon/delete.go b/daemon/delete.go index 9539e816c7..ec9d5c5f18 100644 --- a/daemon/delete.go +++ b/daemon/delete.go @@ -123,10 +123,14 @@ func (daemon *Daemon) cleanupContainer(container *container.Container, forceRemo return fmt.Errorf("Unable to remove filesystem for %v: %v", container.ID, err) } - metadata, err := daemon.layerStore.ReleaseRWLayer(container.RWLayer) - layer.LogReleaseMetadata(metadata) - if err != nil && err != layer.ErrMountDoesNotExist { - return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", daemon.GraphDriverName(), container.ID, err) + // When container creation fails and `RWLayer` has not been created yet, we + // do not call `ReleaseRWLayer` + if container.RWLayer != nil { + metadata, err := daemon.layerStore.ReleaseRWLayer(container.RWLayer) + layer.LogReleaseMetadata(metadata) + if err != nil && err != layer.ErrMountDoesNotExist { + return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", daemon.GraphDriverName(), container.ID, err) + } } return nil