浏览代码

Merge pull request #5560 from gabrtv/deregister-containers-earlier

De-register containers before removing driver and containerGraph references
Guillaume J. Charmes 11 年之前
父节点
当前提交
103d028132
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      daemon/daemon.go

+ 4 - 3
daemon/daemon.go

@@ -272,6 +272,10 @@ func (daemon *Daemon) Destroy(container *Container) error {
 		return err
 		return err
 	}
 	}
 
 
+	// Deregister the container before removing its directory, to avoid race conditions
+	daemon.idIndex.Delete(container.ID)
+	daemon.containers.Remove(element)
+
 	if err := daemon.driver.Remove(container.ID); err != nil {
 	if err := daemon.driver.Remove(container.ID); err != nil {
 		return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", daemon.driver, container.ID, err)
 		return fmt.Errorf("Driver %s failed to remove root filesystem %s: %s", daemon.driver, container.ID, err)
 	}
 	}
@@ -285,9 +289,6 @@ func (daemon *Daemon) Destroy(container *Container) error {
 		utils.Debugf("Unable to remove container from link graph: %s", err)
 		utils.Debugf("Unable to remove container from link graph: %s", err)
 	}
 	}
 
 
-	// Deregister the container before removing its directory, to avoid race conditions
-	daemon.idIndex.Delete(container.ID)
-	daemon.containers.Remove(element)
 	if err := os.RemoveAll(container.root); err != nil {
 	if err := os.RemoveAll(container.root); err != nil {
 		return fmt.Errorf("Unable to remove filesystem for %v: %v", container.ID, err)
 		return fmt.Errorf("Unable to remove filesystem for %v: %v", container.ID, err)
 	}
 	}