From 9598c4c905cae2fd2be6699ec3b1a7357ac314c2 Mon Sep 17 00:00:00 2001 From: Djordje Lukic Date: Thu, 28 Apr 2022 14:55:01 +0200 Subject: [PATCH] Retry initializing TTY size a bit more I some cases, for example if there is a heavy load, the initialization of the TTY size would fail. This change makes the cli retry 10 times instead of 5 and we wait incrementally from 10ms to 100ms Relates to #3554 Signed-off-by: Djordje Lukic --- cli/command/container/tty.go | 6 +++--- cli/command/container/tty_test.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/command/container/tty.go b/cli/command/container/tty.go index cc64f999dc..1d287b0068 100644 --- a/cli/command/container/tty.go +++ b/cli/command/container/tty.go @@ -45,7 +45,7 @@ func resizeTty(ctx context.Context, cli command.Cli, id string, isExec bool) err return resizeTtyTo(ctx, cli.Client(), id, height, width, isExec) } -// initTtySize is to init the tty's size to the same as the window, if there is an error, it will retry 5 times. +// initTtySize is to init the tty's size to the same as the window, if there is an error, it will retry 10 times. func initTtySize(ctx context.Context, cli command.Cli, id string, isExec bool, resizeTtyFunc func(ctx context.Context, cli command.Cli, id string, isExec bool) error) { rttyFunc := resizeTtyFunc if rttyFunc == nil { @@ -54,8 +54,8 @@ func initTtySize(ctx context.Context, cli command.Cli, id string, isExec bool, r if err := rttyFunc(ctx, cli, id, isExec); err != nil { go func() { var err error - for retry := 0; retry < 5; retry++ { - time.Sleep(10 * time.Millisecond) + for retry := 0; retry < 10; retry++ { + time.Sleep(time.Duration(retry+1) * 10 * time.Millisecond) if err = rttyFunc(ctx, cli, id, isExec); err == nil { break } diff --git a/cli/command/container/tty_test.go b/cli/command/container/tty_test.go index d29381042a..70552c9152 100644 --- a/cli/command/container/tty_test.go +++ b/cli/command/container/tty_test.go @@ -25,6 +25,6 @@ func TestInitTtySizeErrors(t *testing.T) { ctx := context.Background() cli := test.NewFakeCli(&fakeClient{containerExecResizeFunc: fakeContainerExecResizeFunc}) initTtySize(ctx, cli, "8mm8nn8tt8bb", true, fakeResizeTtyFunc) - time.Sleep(100 * time.Millisecond) + time.Sleep(750 * time.Millisecond) assert.Check(t, is.Equal(expectedError, cli.ErrBuffer().String())) }