From 8a0fcf99f4eed7ce25d7cfbd443ade9b243f1ab3 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 26 May 2024 12:27:01 +1000 Subject: [PATCH] Gracefully handle situation when container details have not yet loaded This should be very rare but it does happen sometimes --- pkg/gui/container_logs.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/gui/container_logs.go b/pkg/gui/container_logs.go index 95144478..2a1d4ecc 100644 --- a/pkg/gui/container_logs.go +++ b/pkg/gui/container_logs.go @@ -119,7 +119,24 @@ func (gui *Gui) writeContainerLogs(container *commands.Container, ctx context.Co } defer readCloser.Close() - if container.DetailsLoaded() && container.Details.Config.Tty { + if !container.DetailsLoaded() { + // loop until the details load or context is cancelled, using timer + ticker := time.NewTicker(time.Millisecond * 100) + defer ticker.Stop() + outer: + for { + select { + case <-ctx.Done(): + return nil + case <-ticker.C: + if container.DetailsLoaded() { + break outer + } + } + } + } + + if container.Details.Config.Tty { _, err = io.Copy(writer, readCloser) if err != nil { return err