| ... | ... |
@@ -134,6 +134,9 @@ func (runtime *Runtime) Register(container *Container) error {
|
| 134 | 134 |
return err |
| 135 | 135 |
} |
| 136 | 136 |
|
| 137 |
+ // init the wait lock |
|
| 138 |
+ container.waitLock = make(chan struct{})
|
|
| 139 |
+ |
|
| 137 | 140 |
// FIXME: if the container is supposed to be running but is not, auto restart it? |
| 138 | 141 |
// if so, then we need to restart monitor and init a new lock |
| 139 | 142 |
// If the container is supposed to be running, make sure of it |
| ... | ... |
@@ -150,6 +153,14 @@ func (runtime *Runtime) Register(container *Container) error {
|
| 150 | 150 |
} |
| 151 | 151 |
} |
| 152 | 152 |
} |
| 153 |
+ |
|
| 154 |
+ // If the container is not running or just has been flagged not running |
|
| 155 |
+ // then close the wait lock chan (will be reset upon start) |
|
| 156 |
+ if !container.State.Running {
|
|
| 157 |
+ close(container.waitLock) |
|
| 158 |
+ } |
|
| 159 |
+ |
|
| 160 |
+ // Even if not running, we init the lock (prevents races in start/stop/kill) |
|
| 153 | 161 |
container.State.initLock() |
| 154 | 162 |
|
| 155 | 163 |
container.runtime = runtime |