From 8cf67737311f1fb02c9c50e8d7a26e3ff126377e Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 25 Aug 2016 15:54:49 +0800 Subject: [PATCH] Optimize the restart function code Signed-off-by: zhouhao Upstream-commit: 870cf1096f2ba000e67d4f0f3fabba146fe0cfe0 Component: engine --- components/engine/daemon/restart.go | 34 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/components/engine/daemon/restart.go b/components/engine/daemon/restart.go index 061a2f3e58..23a5d9981e 100644 --- a/components/engine/daemon/restart.go +++ b/components/engine/daemon/restart.go @@ -36,25 +36,27 @@ func (daemon *Daemon) containerRestart(container *container.Container, seconds i defer daemon.Unmount(container) } - // set AutoRemove flag to false before stop so the container won't be - // removed during restart process - autoRemove := container.HostConfig.AutoRemove + if container.IsRunning() { + // set AutoRemove flag to false before stop so the container won't be + // removed during restart process + autoRemove := container.HostConfig.AutoRemove - container.HostConfig.AutoRemove = false - err := daemon.containerStop(container, seconds) - // restore AutoRemove irrespective of whether the stop worked or not - container.HostConfig.AutoRemove = autoRemove - // containerStop will write HostConfig to disk, we shall restore AutoRemove - // in disk too - if toDiskErr := container.ToDiskLocking(); toDiskErr != nil { - logrus.Errorf("Write container to disk error: %v", toDiskErr) + container.HostConfig.AutoRemove = false + err := daemon.containerStop(container, seconds) + // restore AutoRemove irrespective of whether the stop worked or not + container.HostConfig.AutoRemove = autoRemove + // containerStop will write HostConfig to disk, we shall restore AutoRemove + // in disk too + if toDiskErr := container.ToDiskLocking(); toDiskErr != nil { + logrus.Errorf("Write container to disk error: %v", toDiskErr) + } + + if err != nil { + return err + } } - if err != nil { - return err - } - - if err = daemon.containerStart(container); err != nil { + if err := daemon.containerStart(container); err != nil { return err }