Selaa lähdekoodia

Add backwards READ compatibility for the old libcontainer API

Docker-DCO-1.1-Signed-off-by: Tibor Vass <teabee89@gmail.com> (github: tiborvass)
Tibor Vass 11 vuotta sitten
vanhempi
commit
cccb64e863
2 muutettua tiedostoa jossa 20 lisäystä ja 5 poistoa
  1. 14 5
      daemon/execdriver/native/driver.go
  2. 6 0
      daemon/execdriver/native/info.go

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

@@ -173,12 +173,21 @@ func (d *driver) Terminate(p *execdriver.Command) error {
 	// lets check the start time for the process
 	state, err := libcontainer.GetState(filepath.Join(d.root, p.ID))
 	if err != nil {
-		// if we don't have the data on disk then we can assume the process is gone
-		// because this is only removed after we know the process has stopped
-		if os.IsNotExist(err) {
-			return nil
+		if !os.IsNotExist(err) {
+			return err
 		}
-		return err
+		// TODO: Remove this part for version 1.2.0
+		// This is added only to ensure smooth upgrades from pre 1.1.0 to 1.1.0
+		data, err := ioutil.ReadAll(filepath.Join(d.root, p.ID, "start"))
+		if err != nil {
+			// if we don't have the data on disk then we can assume the process is gone
+			// because this is only removed after we know the process has stopped
+			if os.IsNotExist(err) {
+				return nil
+			}
+			return err
+		}
+		state.InitStartTime = string(data)
 	}
 
 	currentStartTime, err := system.GetProcessStartTime(p.Process.Pid)

+ 6 - 0
daemon/execdriver/native/info.go

@@ -1,6 +1,7 @@
 package native
 
 import (
+	"os"
 	"path/filepath"
 
 	"github.com/docker/libcontainer"
@@ -18,5 +19,10 @@ func (i *info) IsRunning() bool {
 	if _, err := libcontainer.GetState(filepath.Join(i.driver.root, i.ID)); err == nil {
 		return true
 	}
+	// TODO: Remove this part for version 1.2.0
+	// This is added only to ensure smooth upgrades from pre 1.1.0 to 1.1.0
+	if _, err := os.Stat(filepath.Join(i.driver.root, i.ID, "pid")); err == nil {
+		return true
+	}
 	return false
 }