Skip to content

fix(cache-restore): retry s3 Download on 412#4045

Open
buildkate wants to merge 1 commit into
mainfrom
kates/A-1452-retry-getobject
Open

fix(cache-restore): retry s3 Download on 412#4045
buildkate wants to merge 1 commit into
mainfrom
kates/A-1452-retry-getobject

Conversation

@buildkate

@buildkate buildkate commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Description

(cache restore): retry s3 GetObject on status 412 PreconditionFailed

This error occurs on the s3 multipart downloader when the object's ETtag changes mid-download (which can happen when a concurrent restore's TTL-refresh CopyObject changes the object).

Context

Resolves A-1452

Changes

Retries the s3 GetObject

Testing

  • Tests have run locally (with go test ./...). Buildkite employees may check this if the pipeline has run automatically.
  • Code is formatted (with go tool gofumpt -extra -w .)

Affiliation (optional, external contributors)

Buildkite

Disclosures / Credits

Claude

@buildkate buildkate requested review from a team as code owners July 2, 2026 06:38

@buildsworth-bk-app buildsworth-bk-app Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn’t find any code issues in the S3 GetObject 412 retry path. I’m leaving this as a comment rather than approving because it changes runtime cache restore behaviour, which I read as L2 and there isn’t an L2 approval grant for this PR.

Want to dig deeper? The full session log is attached to this Buildkite build. Download the session file and open a new pi session with it:

Download the buildsworth logs from build 2376, then answer my questions about the findings.

@buildkate buildkate added the internal Non-user facing, internal change. label Jul 2, 2026
@buildkate buildkate changed the title fix(cache-restore): implement retry on GetObject fix(cache-restore): retry s3 Download on 412 Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal Non-user facing, internal change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant