Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: awslabs/git-remote-s3
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: reflex-dev/git-remote-s3
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 2 files changed
  • 1 contributor

Commits on May 14, 2026

  1. Detect own-leaked lock on PreconditionFailed in acquire_lock (#2)

    When boto3 silently retries a PutObject that already succeeded server-side
    (transient 5xx after write, lost response, connection reset, etc.), the
    retry returns 412 PreconditionFailed because the lock now exists. The
    helper previously treated this as "another client holds the lock" and only
    recovered after the 60s TTL expired.
    
    Write a per-call uuid into the lock body. On 412 PreconditionFailed read
    the existing body — if it matches our token, boto3 must have retried our
    own successful PUT and we own the lock. Take it via the same delete +
    re-acquire path the staleness check already uses.
    
    Concurrent clients still serialise correctly: each call generates its own
    uuid, so a foreign client's lock body never matches our token. Callers who
    also need to recover locks across reinvocations of the helper (e.g. an
    outer-loop retry of git push) can set GIT_REMOTE_S3_OWNER_TOKEN to a
    stable per-client value.
    Darksinian authored May 14, 2026
    Configuration menu
    Copy the full SHA
    36a8eee View commit details
    Browse the repository at this point in the history
Loading