зеркало из https://github.com/microsoft/docker.git
Make sure all containers (even previously stopped) get a correct wait lock
This commit is contained in:
Родитель
40ebe78bb1
Коммит
9f83b9df22
11
runtime.go
11
runtime.go
|
@ -134,6 +134,9 @@ func (runtime *Runtime) Register(container *Container) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// init the wait lock
|
||||||
|
container.waitLock = make(chan struct{})
|
||||||
|
|
||||||
// FIXME: if the container is supposed to be running but is not, auto restart it?
|
// FIXME: if the container is supposed to be running but is not, auto restart it?
|
||||||
// if so, then we need to restart monitor and init a new lock
|
// if so, then we need to restart monitor and init a new lock
|
||||||
// If the container is supposed to be running, make sure of it
|
// If the container is supposed to be running, make sure of it
|
||||||
|
@ -150,6 +153,14 @@ func (runtime *Runtime) Register(container *Container) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the container is not running or just has been flagged not running
|
||||||
|
// then close the wait lock chan (will be reset upon start)
|
||||||
|
if !container.State.Running {
|
||||||
|
close(container.waitLock)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Even if not running, we init the lock (prevents races in start/stop/kill)
|
||||||
container.State.initLock()
|
container.State.initLock()
|
||||||
|
|
||||||
container.runtime = runtime
|
container.runtime = runtime
|
||||||
|
|
Загрузка…
Ссылка в новой задаче