diff --git a/daemon/container.go b/daemon/container.go index 1eaac8f3b..871b1d67c 100644 --- a/daemon/container.go +++ b/daemon/container.go @@ -517,10 +517,9 @@ func (container *Container) monitor(callback execdriver.StartCallback) error { if container.daemon != nil && container.daemon.srv != nil { container.LogEvent("die") } - if container.daemon != nil && container.daemon.srv != nil && container.daemon.srv.IsRunning() { - // FIXME: here is race condition between two RUN instructions in Dockerfile - // because they share same runconfig and change image. Must be fixed - // in builder/builder.go + // If the engine is shutting down, don't save the container state as stopped. + // This will cause it to be restarted when the engine is restarted. + if container.daemon != nil && container.daemon.eng != nil && !container.daemon.eng.IsShutdown() { if err := container.toDisk(); err != nil { utils.Errorf("Error dumping container %s state to disk: %s\n", container.ID, err) } diff --git a/daemon/server.go b/daemon/server.go index 12fb0f57c..af923d935 100644 --- a/daemon/server.go +++ b/daemon/server.go @@ -1,5 +1,5 @@ package daemon +// FIXME: this shim interface is no longer needed, it can be removed type Server interface { - IsRunning() bool // returns true if the server is currently in operation } diff --git a/server/init.go b/server/init.go index f389fd4f3..3cd472149 100644 --- a/server/init.go +++ b/server/init.go @@ -12,9 +12,6 @@ import ( func (srv *Server) handlerWrap(h engine.Handler) engine.Handler { return func(job *engine.Job) engine.Status { - if !srv.IsRunning() { - return job.Errorf("Server is not running") - } srv.tasks.Add(1) defer srv.tasks.Done() return h(job) @@ -53,7 +50,6 @@ func InitServer(job *engine.Job) engine.Status { if err := srv.daemon.Install(job.Eng); err != nil { return job.Error(err) } - srv.SetRunning(true) return engine.StatusOK } diff --git a/server/server.go b/server/server.go index c185a6951..21b271d87 100644 --- a/server/server.go +++ b/server/server.go @@ -28,25 +28,11 @@ import ( "github.com/docker/docker/engine" ) -func (srv *Server) SetRunning(status bool) { - srv.Lock() - defer srv.Unlock() - - srv.running = status -} - -func (srv *Server) IsRunning() bool { - srv.RLock() - defer srv.RUnlock() - return srv.running -} - type Server struct { sync.RWMutex daemon *daemon.Daemon pullingPool map[string]chan struct{} pushingPool map[string]chan struct{} Eng *engine.Engine - running bool tasks sync.WaitGroup }