diff --git a/driver/docker-container/driver.go b/driver/docker-container/driver.go index b9f95c8a9103..1276f76f4fda 100644 --- a/driver/docker-container/driver.go +++ b/driver/docker-container/driver.go @@ -573,11 +573,10 @@ func clientWaitDeadline(state *container.State, now time.Time) (time.Time, error if err != nil { return time.Time{}, nil } - deadline := startedAt.Add(buildkitdStartupTimeout) - if !now.Before(deadline) { + if !now.Before(startedAt.Add(buildkitdStartupTimeout)) { return time.Time{}, nil } - return deadline, nil + return now.Add(buildkitdStartupTimeout), nil } func (d *Driver) Factory() driver.Factory { diff --git a/driver/docker-container/driver_test.go b/driver/docker-container/driver_test.go index 9a47579c426a..77ab5e16076a 100644 --- a/driver/docker-container/driver_test.go +++ b/driver/docker-container/driver_test.go @@ -28,13 +28,21 @@ func TestClientWaitDeadline(t *testing.T) { }) t.Run("recent-start-builder-waits", func(t *testing.T) { - startedAt := now.Add(-time.Second) deadline, err := clientWaitDeadline(&container.State{ Running: true, - StartedAt: startedAt.Format(time.RFC3339Nano), + StartedAt: now.Add(-time.Second).Format(time.RFC3339Nano), }, now) require.NoError(t, err) - require.True(t, deadline.Equal(startedAt.Add(buildkitdStartupTimeout))) + require.True(t, deadline.Equal(now.Add(buildkitdStartupTimeout))) + }) + + t.Run("nearly-expired-startup-window-gets-full-wait", func(t *testing.T) { + deadline, err := clientWaitDeadline(&container.State{ + Running: true, + StartedAt: now.Add(-buildkitdStartupTimeout + time.Nanosecond).Format(time.RFC3339Nano), + }, now) + require.NoError(t, err) + require.True(t, deadline.Equal(now.Add(buildkitdStartupTimeout))) }) t.Run("invalid-start-time-skips-wait", func(t *testing.T) {