txn: support shared lock for lock wait table#19094
txn: support shared lock for lock wait table#19094you06 merged 7 commits intotikv:tikv-8.5-with-shared-lockfrom
Conversation
Signed-off-by: you06 <you1474600@gmail.com>
Signed-off-by: you06 <you1474600@gmail.com>
Signed-off-by: you06 <you1474600@gmail.com>
Signed-off-by: you06 <you1474600@gmail.com>
Signed-off-by: you06 <you1474600@gmail.com>
Signed-off-by: you06 <you1474600@gmail.com>
| self.mock_lock_wait_with_shared(key, start_ts, encountered_lock_ts, resumable, false) | ||
| } | ||
|
|
||
| fn mock_lock_wait_with_shared( |
There was a problem hiding this comment.
It is confusing to name it must lock with shared while having a shared parameter.
There was a problem hiding this comment.
..._with_shared means accept a shared parameter, and such naming habit is common in the codebase.
| cmd.keys.iter().any(|k| k.2) | ||
| } else { | ||
| false | ||
| }; |
There was a problem hiding this comment.
Could AcquirePessimisticLockResumed write shared locks?
There was a problem hiding this comment.
No, AcquirePessimisticLockResumed schedulers are only created in force lock(lock_with_conflict), and all the shared locks go through normal pessimistic lock process.
tikv/src/storage/txn/commands/mod.rs
Lines 228 to 231 in 795f22b
After the lock wait is resumed, allow_lock_with_conflict schedulers can return a woken_up_resumable_entry.
tikv/src/storage/lock_manager/lock_waiting_queue.rs
Lines 524 to 527 in 795f22b
Then if woken_up_resumable_entry is not none, the delay_wake_up_futures will be cast into AcquirePessimisticLockResumed
tikv/src/storage/txn/scheduler.rs
Lines 1081 to 1088 in 795f22b
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: cfzjywxk, zyguan The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
* implement lock waiting queue Signed-off-by: you06 <you1474600@gmail.com> * donot track shared lock in deadlock detector Signed-off-by: you06 <you1474600@gmail.com> * support lock wakeup for shared lock Signed-off-by: you06 <you1474600@gmail.com> * fmt code Signed-off-by: you06 <you1474600@gmail.com> * rename param Signed-off-by: you06 <you1474600@gmail.com> * remove unused test function Signed-off-by: you06 <you1474600@gmail.com> * boxed LockWaitEntry Signed-off-by: you06 <you1474600@gmail.com> --------- Signed-off-by: you06 <you1474600@gmail.com>
* implement lock waiting queue Signed-off-by: you06 <you1474600@gmail.com> * donot track shared lock in deadlock detector Signed-off-by: you06 <you1474600@gmail.com> * support lock wakeup for shared lock Signed-off-by: you06 <you1474600@gmail.com> * fmt code Signed-off-by: you06 <you1474600@gmail.com> * rename param Signed-off-by: you06 <you1474600@gmail.com> * remove unused test function Signed-off-by: you06 <you1474600@gmail.com> * boxed LockWaitEntry Signed-off-by: you06 <you1474600@gmail.com> --------- Signed-off-by: you06 <you1474600@gmail.com>
* implement lock waiting queue Signed-off-by: you06 <you1474600@gmail.com> * donot track shared lock in deadlock detector Signed-off-by: you06 <you1474600@gmail.com> * support lock wakeup for shared lock Signed-off-by: you06 <you1474600@gmail.com> * fmt code Signed-off-by: you06 <you1474600@gmail.com> * rename param Signed-off-by: you06 <you1474600@gmail.com> * remove unused test function Signed-off-by: you06 <you1474600@gmail.com> * boxed LockWaitEntry Signed-off-by: you06 <you1474600@gmail.com> --------- Signed-off-by: you06 <you1474600@gmail.com>
What is changed and how it works?
Issue Number: ref #19087
What's Changed:
Related changes
pingcap/docs/pingcap/docs-cn:Check List
Tests
Side effects
Release note