transaction: Handle commit_ts expired error #521
Merged
+60
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry pick #491
Changes
KeyError::commit_ts_expiredwhen committing the primary key, mirroring client-go’s actionCommit::handleSingleBatch logic (src/transaction/transaction.rs).Compare with Go implementation (https://github.com/tikv/client-go/blob/tidb-8.5/txnkv/transaction/commit.go) by LLM:
primary (:1419-1424), rejects “too large min_commit_ts” (:1426-1436), and retries (:1437). Rust retries by re-running commit_primary() which re-fetches a fresh TSO and rebuilds the commit request (:1372-1406),
which is equivalent to Go’s “update commitTS + update request + continue”.