From 7e30531f20b8c367aad81454abda8505a0d9962a Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 18 Jan 2022 16:27:33 +0100 Subject: [PATCH] compat attach: fix write on closed channel Waiting on an initialized sync.WaitGroup returns immediately. Hence, move the goroutine to wait and close *after* reading the logs. Fixes: #12904 Signed-off-by: Valentin Rothberg --- libpod/oci_conmon_linux.go | 6 +++--- test/apiv2/python/rest_api/test_v2_0_0_container.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go index 3fa43aed90..268a301fbb 100644 --- a/libpod/oci_conmon_linux.go +++ b/libpod/oci_conmon_linux.go @@ -660,13 +660,13 @@ func (r *ConmonOCIRuntime) HTTPAttach(ctr *Container, req *http.Request, w http. } errChan <- err }() + if err := ctr.ReadLog(context.Background(), logOpts, logChan); err != nil { + return err + } go func() { logOpts.WaitGroup.Wait() close(logChan) }() - if err := ctr.ReadLog(context.Background(), logOpts, logChan); err != nil { - return err - } logrus.Debugf("Done reading logs for container %s, %d bytes", ctr.ID(), logSize) if err := <-errChan; err != nil { return err diff --git a/test/apiv2/python/rest_api/test_v2_0_0_container.py b/test/apiv2/python/rest_api/test_v2_0_0_container.py index 1b4597cf8c..0386116a87 100644 --- a/test/apiv2/python/rest_api/test_v2_0_0_container.py +++ b/test/apiv2/python/rest_api/test_v2_0_0_container.py @@ -130,7 +130,7 @@ def test_resize(self): def test_attach(self): self.skipTest("FIXME: Test timeouts") - r = requests.post(self.uri(self.resolve_container("/containers/{}/attach")), timeout=5) + r = requests.post(self.uri(self.resolve_container("/containers/{}/attach?logs=true")), timeout=5) self.assertIn(r.status_code, (101, 500), r.text) def test_logs(self):