From dcef0b1946d504667653d97b249d22e1ed43204c Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Thu, 15 Oct 2020 07:28:30 +0200 Subject: [PATCH] runtime/docker/node: logreader must not be nil Check for nil when trying to return exec process log reader. Fixes #377 --- pkg/cluster/host.go | 7 +++++++ pkg/runtimes/docker/node.go | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/cluster/host.go b/pkg/cluster/host.go index 99f85cc9..31cbd557 100644 --- a/pkg/cluster/host.go +++ b/pkg/cluster/host.go @@ -78,6 +78,13 @@ func resolveHostnameFromInside(ctx context.Context, rtime rt.Runtime, node *k3d. logreader, execErr := rtime.ExecInNodeGetLogs(ctx, node, []string{"sh", "-c", fmt.Sprintf("nslookup %s", hostname)}) + if logreader == nil { + if execErr != nil { + return nil, execErr + } + return nil, fmt.Errorf("Failed to get logs from exec process") + } + submatches := map[string]string{} scanner := bufio.NewScanner(logreader) if scanner == nil { diff --git a/pkg/runtimes/docker/node.go b/pkg/runtimes/docker/node.go index 968ac049..6e0d071a 100644 --- a/pkg/runtimes/docker/node.go +++ b/pkg/runtimes/docker/node.go @@ -308,7 +308,10 @@ func (d Docker) GetNodeLogs(ctx context.Context, node *k3d.Node, since time.Time func (d Docker) ExecInNodeGetLogs(ctx context.Context, node *k3d.Node, cmd []string) (*bufio.Reader, error) { resp, err := executeInNode(ctx, node, cmd) if err != nil { - return resp.Reader, err + if resp.Reader != nil { // sometimes the exec process returns with a non-zero exit code, but we still have the logs we + return resp.Reader, err + } + return nil, err } return resp.Reader, nil }