summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2022-03-24 11:59:50 +0100
committerPaul Holzinger <pholzing@redhat.com>2022-03-24 12:06:48 +0100
commit7ae52e86ffbd3851769f02db503332c9c8e84e4e (patch)
tree02d7c930f122d38669c35b7eed006c2d6b9fd9a2
parent80123ca505081fca513fc0865cf6e2daf43ff854 (diff)
downloadpodman-7ae52e86ffbd3851769f02db503332c9c8e84e4e.tar.gz
podman-7ae52e86ffbd3851769f02db503332c9c8e84e4e.tar.bz2
podman-7ae52e86ffbd3851769f02db503332c9c8e84e4e.zip
readConmonPipeData: try to improve error
Issue #10927 reports `container create failed (no logs from conmon): EOF` errors. Since we do not know the root cause it would be helpful to try to get as much info as possible out of the error. (buffer).ReadBytes() will return the bytes read even when an error occurs. So when we get an EOF we could still have some valuable information in the buffer. Lets try to unmarshal them and if this fails we add the bytes to the error message. This does not fix the issue but it might help us getting a better error. [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r--libpod/oci_conmon_linux.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go
index ba4079bed..38bf85834 100644
--- a/libpod/oci_conmon_linux.go
+++ b/libpod/oci_conmon_linux.go
@@ -1587,11 +1587,13 @@ func readConmonPipeData(runtimeName string, pipe *os.File, ociLog string) (int,
var si *syncInfo
rdr := bufio.NewReader(pipe)
b, err := rdr.ReadBytes('\n')
- if err != nil {
+ // ignore EOF here, error is returned even when data was read
+ // if it is no valid json unmarshal will fail below
+ if err != nil && !errors.Is(err, io.EOF) {
ch <- syncStruct{err: err}
}
if err := json.Unmarshal(b, &si); err != nil {
- ch <- syncStruct{err: err}
+ ch <- syncStruct{err: fmt.Errorf("conmon bytes %q: %w", string(b), err)}
return
}
ch <- syncStruct{si: si}