Skip to content

fix: bound commit conflict retry backoff - #8169

Merged
Xuanwo merged 1 commit into
mainfrom
gatekeeper/fix-7882-1
Aug 3, 2026
Merged

fix: bound commit conflict retry backoff#8169
Xuanwo merged 1 commit into
mainfrom
gatekeeper/fix-7882-1

Conversation

@lance-gatekeeper

Copy link
Copy Markdown
Contributor

Summary

  • bound attached and detached commit-conflict backoff by a shared 30-second retry budget
  • add CommitBuilder::with_retry_timeout for callers that need a different budget
  • reuse the write-retry timeout helper and clean up transaction files on timeout
  • add regression coverage with the outer commit timeout disabled

Root cause

commit_transaction derived SlotBackoff delays from the first attempt latency but awaited each delay directly. A slow first attempt could therefore produce a backoff sleep longer than the intended retry wall-clock budget.

Validation

  • cargo fmt --all -- --check
  • cargo test -p lance commit_retry_timeout --lib
  • cargo test -p lance test_commit_timeout --lib
  • cargo test -p lance --doc with_retry_timeout
  • cargo clippy --all --tests --benches -- -D warnings

Fixes #7882

@github-actions github-actions Bot added the bug Something isn't working label Aug 3, 2026

@lance-gatekeeper lance-gatekeeper Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Gate recommendation: approve. The change addresses the unbounded latency-scaled sleep at the commit boundary, applies one remaining-time budget across attached and detached retry backoff, and preserves commit-outcome verification before cleanup. Reusing the existing timeout semantics is preferable to changing SlotBackoff globally because unrelated contention behavior remains unchanged.

@Xuanwo
Xuanwo merged commit cea0484 into main Aug 3, 2026
39 of 40 checks passed
@Xuanwo
Xuanwo deleted the gatekeeper/fix-7882-1 branch August 3, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: commit-retry sleep has no timeout wrapper, unlike the write-retry path

1 participant