Skip to content

Commit 5d590da

Browse files
craig[bot]stevendanna
andcommitted
148600: kvcoord: transform replicated, locking Get requests r=arulajmani,yuzefovich a=stevendanna A replicated locking Get request is a write that we would like to defer until commit time. We do this by transforming it to an unreplicated locking Get. At flush time, if no other write has been performed on that key, we send a replicated locking Get to ensure we have exclusion on the key all the way until the commit timestamp. Epic: none Release note: None 148660: concurrency: don't consider lock acquisitions at higher epochs idempotent r=arulajmani a=stevendanna Stateful transaction retries that result from an IntentMissingError happen at the same WriteTimestamp as the previous attempt. Thus, sequences like the one included in the test: - Req0: Put@epo=0 (not included below since it has no lock table side effects) - Req1: Get(Exclusive, Unreplicated)`@epo=0` - Req2: Get(Shared, Replicated)`@epo=0` - Req3: Put@epo=0 - IntentMissingError on some unrelated key. - Req4: Put@epo=1 (retry of Req0) Would not result in the unreplicated lock being cleared from the lock table, even though it would be cleared on most other types of retries. Fixes #148635 Release note: None Co-authored-by: Steven Danna <[email protected]>
3 parents 383b7e0 + b7b3435 + edcfa98 commit 5d590da

File tree

6 files changed

+873
-70
lines changed

6 files changed

+873
-70
lines changed

0 commit comments

Comments
 (0)