Skip to content

Bound how long Upload Assets can hang - #543

Merged
tashian merged 1 commit into
mainfrom
carl/upload-assets-timeouts
Jul 27, 2026
Merged

Bound how long Upload Assets can hang#543
tashian merged 1 commit into
mainfrom
carl/upload-assets-timeouts

Conversation

@tashian

@tashian tashian commented Jul 27, 2026

Copy link
Copy Markdown
Member

Follow-up to #541 / #542. Today's full_sync run stalled and I cancelled it by hand at 19 minutes. Nothing in the workflow would have stopped it before GitHub's 6-hour default job timeout.

What happened

Assuming role with OIDC
Retry AssumeRole: attempt 1 of 12 failed: Could not assume role with OIDC:
  connect ETIMEDOUT 3.146.15.71:443. Retrying after 12ms.

3.146.15.71 is sts.us-east-2.amazonaws.com. Each attempt burns ~6m45s in the TCP connect timeout — the action's own backoff is trivial (12ms, 58ms) — so 12 attempts is a ~81 minute budget for a failure that cannot succeed, because the OIDC token expires partway through.

Two bounds

timeout-minutes: 15        # on the job

A backstop for a hang in any step, not just this one. A full sync of all 128 graphics takes ~3.2 minutes, so this is ~5x observed.

action-timeout-s: 120      # on the credentials step
retry-max-attempts: 3

The action defaults to no timeout and 12 retries. Retries are worth keeping — transient STS errors are real — but 12 is pointless when the token dies first. 120s caps the step inside the first failed attempt.

A full sync of all 128 graphics takes ~3 minutes, but nothing capped the
job. Today a Configure AWS credentials step stalled on connect ETIMEDOUT to
sts.us-east-2.amazonaws.com; it ran 19 minutes before being cancelled by
hand, with hours of headroom left under GitHub's 6-hour default.

Two bounds, because they fail differently:

  timeout-minutes: 15 on the job — a backstop for a hang in any step, not
  just this one. Five times the observed full-sync duration.

  action-timeout-s: 120 on the credentials step — the action defaults to no
  timeout and 12 retries, and a TCP connect timeout costs ~6m45s per
  attempt, so the default budget is ~81 minutes. Retries are kept, just
  lowered to 3: transient STS errors are real and worth retrying, but the
  OIDC token expires partway through a long retry loop, so later attempts
  cannot succeed anyway.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tashian
tashian requested a review from a team as a code owner July 27, 2026 21:58
@tashian
tashian enabled auto-merge July 27, 2026 22:07
@tashian
tashian merged commit ad37644 into main Jul 27, 2026
3 checks passed
@tashian
tashian deleted the carl/upload-assets-timeouts branch July 27, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants