Skip to content

Commit

Permalink
Retry initializing TTY size a bit more
Browse files Browse the repository at this point in the history
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 more times, 10 instead of 5 and we wait 100ms
between two calls to resize the TTY.

Relates to docker#3554

Signed-off-by: Djordje Lukic <[email protected]>
  • Loading branch information
rumpl committed Apr 28, 2022
1 parent 6c9eb70 commit ad96c09
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
6 changes: 3 additions & 3 deletions cli/command/container/tty.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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(100 * time.Millisecond)
if err = rttyFunc(ctx, cli, id, isExec); err == nil {
break
}
Expand Down
2 changes: 1 addition & 1 deletion cli/command/container/tty_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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(1500 * time.Millisecond)
assert.Check(t, is.Equal(expectedError, cli.ErrBuffer().String()))
}

0 comments on commit ad96c09

Please sign in to comment.