diff --git a/components/engine/graphdriver/aufs/aufs.go b/components/engine/graphdriver/aufs/aufs.go index fd0ed7b7af..7f9cdc2b2e 100644 --- a/components/engine/graphdriver/aufs/aufs.go +++ b/components/engine/graphdriver/aufs/aufs.go @@ -182,14 +182,17 @@ func (a *Driver) Remove(id string) error { return err } realPath := path.Join(a.rootPath(), p, id) - if err := os.Rename(realPath, tmp); err != nil { + if err := os.Rename(realPath, tmp); err != nil && !os.IsNotExist(err) { return err } defer os.RemoveAll(tmp) } // Remove the layers file for the id - return os.Remove(path.Join(a.rootPath(), "layers", id)) + if err := os.Remove(path.Join(a.rootPath(), "layers", id)); err != nil && !os.IsNotExist(err) { + return err + } + return nil } // Return the rootfs path for the id @@ -300,7 +303,7 @@ func (a *Driver) Cleanup() error { } for _, id := range ids { if err := a.unmount(id); err != nil { - return err + utils.Errorf("Unmounting %s: %s", utils.TruncateID(id), err) } } return nil diff --git a/components/engine/runtime.go b/components/engine/runtime.go index 95e0e599cb..74516d1c50 100644 --- a/components/engine/runtime.go +++ b/components/engine/runtime.go @@ -729,9 +729,23 @@ func NewRuntimeFromDirectory(config *DaemonConfig) (*Runtime, error) { } func (runtime *Runtime) Close() error { - runtime.networkManager.Close() - runtime.driver.Cleanup() - return runtime.containerGraph.Close() + errorsStrings := []string{} + if err := runtime.networkManager.Close(); err != nil { + utils.Errorf("runtime.networkManager.Close(): %s", err.Error()) + errorsStrings = append(errorsStrings, err.Error()) + } + if err := runtime.driver.Cleanup(); err != nil { + utils.Errorf("runtime.driver.Cleanup(): %s", err.Error()) + errorsStrings = append(errorsStrings, err.Error()) + } + if err := runtime.containerGraph.Close(); err != nil { + utils.Errorf("runtime.containerGraph.Close(): %s", err.Error()) + errorsStrings = append(errorsStrings, err.Error()) + } + if len(errorsStrings) > 0 { + return fmt.Errorf("%s", strings.Join(errorsStrings, ", ")) + } + return nil } func (runtime *Runtime) Mount(container *Container) error {