From 8a938a3f9df631667c5f9e5d4a2185207e492a0d Mon Sep 17 00:00:00 2001 From: Lantao Liu Date: Thu, 20 Sep 2018 16:58:36 -0700 Subject: runsc: allow `runsc wait` on a container for multiple times. PiperOrigin-RevId: 213908919 Change-Id: I74eff99a5360bb03511b946f4cb5658bb5fc40c7 --- runsc/boot/loader.go | 7 ------- runsc/container/multi_container_test.go | 8 ++++---- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go index e47eced18..5867eec96 100644 --- a/runsc/boot/loader.go +++ b/runsc/boot/loader.go @@ -573,15 +573,8 @@ func (l *Loader) waitContainer(cid string, waitStatus *uint32) error { // If the thread either has already exited or exits during waiting, // consider the container exited. - // TODO: Multiple calls to waitContainer() should return - // the same exit status. ws := l.wait(tg) *waitStatus = ws - - l.mu.Lock() - defer l.mu.Unlock() - delete(l.containerRootTGs, cid) - return nil } diff --git a/runsc/container/multi_container_test.go b/runsc/container/multi_container_test.go index 0df587e30..2867aa3b9 100644 --- a/runsc/container/multi_container_test.go +++ b/runsc/container/multi_container_test.go @@ -152,8 +152,8 @@ func TestMultiContainerWait(t *testing.T) { } else if es := ws.ExitStatus(); es != 0 { t.Errorf("process %s exited with non-zero status %d", c.Spec.Process.Args, es) } - if _, err := c.Wait(); err == nil { - t.Errorf("wait for stopped process %s should fail", c.Spec.Process.Args) + if _, err := c.Wait(); err != nil { + t.Errorf("wait for stopped container %s shouldn't fail: %v", c.Spec.Process.Args, err) } }(containers[1]) } @@ -239,8 +239,8 @@ func TestExecWait(t *testing.T) { } else if es := ws.ExitStatus(); es != 0 { t.Fatalf("process %s exited with non-zero status %d", containers[1].Spec.Process.Args, es) } - if _, err := containers[1].Wait(); err == nil { - t.Fatalf("wait for stopped process %s should fail", containers[1].Spec.Process.Args) + if _, err := containers[1].Wait(); err != nil { + t.Fatalf("wait for stopped container %s shouldn't fail: %v", containers[1].Spec.Process.Args, err) } // Execute another process in the first container. -- cgit v1.2.3