waitPidStop: simplify code
The code can be simplified by using a timer directly.
[NO NEW TESTS NEEDED] - should not change behavior.
@@ -949,32 +949,21 @@ func waitContainerStop(ctr *Container, timeout time.Duration) error {
// Wait for a given PID to stop
func waitPidStop(pid int, timeout time.Duration) error {
- done := make(chan struct{})
- chControl := make(chan struct{})
- go func() {
+ timer := time.NewTimer(timeout)
for {
select {
- case <-chControl:
- return
+ case <-timer.C:
+ return fmt.Errorf("given PID did not die within timeout")
default:
if err := unix.Kill(pid, 0); err != nil {
if err == unix.ESRCH {
- close(done)
- return
+ return nil
}
logrus.Errorf("Pinging PID %d with signal 0: %v", pid, err)
}
time.Sleep(100 * time.Millisecond)
}
}
- }()
- select {
- case <-done:
- return nil
- case <-time.After(timeout):
- close(chControl)
- return fmt.Errorf("given PIDs did not die within timeout")
- }
}
func (r *ConmonOCIRuntime) getLogTag(ctr *Container) (string, error) {
