瀏覽代碼

Merge pull request #12423 from crosbymichael/idkbutitworks

Ensure state is destroyed on daemont restart
Jessie Frazelle 10 年之前
父節點
當前提交
1899b2f41a
共有 2 個文件被更改,包括 6 次插入21 次删除
  1. 1 12
      daemon/daemon.go
  2. 5 9
      daemon/execdriver/native/driver.go

+ 1 - 12
daemon/daemon.go

@@ -271,19 +271,8 @@ func (daemon *Daemon) register(container *Container, updateSuffixarray bool) err
 		if err := container.ToDisk(); err != nil {
 		if err := container.ToDisk(); err != nil {
 			logrus.Debugf("saving stopped state to disk %s", err)
 			logrus.Debugf("saving stopped state to disk %s", err)
 		}
 		}
-
-		info := daemon.execDriver.Info(container.ID)
-		if !info.IsRunning() {
-			logrus.Debugf("Container %s was supposed to be running but is not.", container.ID)
-
-			logrus.Debug("Marking as stopped")
-
-			container.SetStopped(&execdriver.ExitStatus{ExitCode: -127})
-			if err := container.ToDisk(); err != nil {
-				return err
-			}
-		}
 	}
 	}
+
 	return nil
 	return nil
 }
 }
 
 

+ 5 - 9
daemon/execdriver/native/driver.go

@@ -268,29 +268,25 @@ func (d *driver) Unpause(c *execdriver.Command) error {
 
 
 func (d *driver) Terminate(c *execdriver.Command) error {
 func (d *driver) Terminate(c *execdriver.Command) error {
 	defer d.cleanContainer(c.ID)
 	defer d.cleanContainer(c.ID)
-	// lets check the start time for the process
-	active := d.activeContainers[c.ID]
-	if active == nil {
-		return fmt.Errorf("active container for %s does not exist", c.ID)
+	container, err := d.factory.Load(c.ID)
+	if err != nil {
+		return err
 	}
 	}
-	state, err := active.State()
+	defer container.Destroy()
+	state, err := container.State()
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
 	pid := state.InitProcessPid
 	pid := state.InitProcessPid
-
 	currentStartTime, err := system.GetProcessStartTime(pid)
 	currentStartTime, err := system.GetProcessStartTime(pid)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
-
 	if state.InitProcessStartTime == currentStartTime {
 	if state.InitProcessStartTime == currentStartTime {
 		err = syscall.Kill(pid, 9)
 		err = syscall.Kill(pid, 9)
 		syscall.Wait4(pid, nil, 0, nil)
 		syscall.Wait4(pid, nil, 0, nil)
 	}
 	}
-
 	return err
 	return err
-
 }
 }
 
 
 func (d *driver) Info(id string) execdriver.Info {
 func (d *driver) Info(id string) execdriver.Info {