Fixes problem with TestDaemonAllocatesListeningPort
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
| ... | ... |
@@ -206,20 +206,33 @@ func (d *Daemon) Stop() error {
|
| 206 | 206 |
if err := d.cmd.Process.Signal(os.Interrupt); err != nil {
|
| 207 | 207 |
return fmt.Errorf("could not send signal: %v", err)
|
| 208 | 208 |
} |
| 209 |
-out: |
|
| 209 |
+out1: |
|
| 210 | 210 |
for {
|
| 211 | 211 |
select {
|
| 212 | 212 |
case err := <-d.wait: |
| 213 | 213 |
return err |
| 214 |
- case <-time.After(20 * time.Second): |
|
| 214 |
+ case <-time.After(15 * time.Second): |
|
| 215 |
+ // time for stopping jobs and run onShutdown hooks |
|
| 215 | 216 |
d.t.Log("timeout")
|
| 216 |
- break out |
|
| 217 |
+ break out1 |
|
| 218 |
+ } |
|
| 219 |
+ } |
|
| 220 |
+ |
|
| 221 |
+out2: |
|
| 222 |
+ for {
|
|
| 223 |
+ select {
|
|
| 224 |
+ case err := <-d.wait: |
|
| 225 |
+ return err |
|
| 217 | 226 |
case <-tick: |
| 218 |
- d.t.Logf("Attempt #%d: daemon is still running with pid %d", i+1, d.cmd.Process.Pid)
|
|
| 227 |
+ i++ |
|
| 228 |
+ if i > 4 {
|
|
| 229 |
+ d.t.Log("tried to interrupt daemon for %d times, now try to kill it", i)
|
|
| 230 |
+ break out2 |
|
| 231 |
+ } |
|
| 232 |
+ d.t.Logf("Attempt #%d: daemon is still running with pid %d", i, d.cmd.Process.Pid)
|
|
| 219 | 233 |
if err := d.cmd.Process.Signal(os.Interrupt); err != nil {
|
| 220 | 234 |
return fmt.Errorf("could not send signal: %v", err)
|
| 221 | 235 |
} |
| 222 |
- i++ |
|
| 223 | 236 |
} |
| 224 | 237 |
} |
| 225 | 238 |
|