-
Notifications
You must be signed in to change notification settings - Fork 5.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tikv: collapse duplicate resolve locks in region requests (#16838) #16925
Merged
jackysp
merged 2 commits into
pingcap:release-4.0
from
sre-bot:release-4.0-f678ce66904b
Apr 29, 2020
Merged
tikv: collapse duplicate resolve locks in region requests (#16838) #16925
jackysp
merged 2 commits into
pingcap:release-4.0
from
sre-bot:release-4.0-f678ce66904b
Apr 29, 2020
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/run-all-tests |
sre-bot
added
component/tikv
status/PTAL
type/4.0-cherry-pick
type/enhancement
The issue or PR belongs to an enhancement.
labels
Apr 29, 2020
LGTM
|
crazycs520
reviewed
Apr 29, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
crazycs520
approved these changes
Apr 29, 2020
@jackysp need a approve and merge thx~ |
/merge |
sre-bot
added
the
status/can-merge
Indicates a PR has been approved by a committer.
label
Apr 29, 2020
/run-all-tests |
@sre-bot merge failed. |
/run-integration-copr-test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
component/tikv
status/can-merge
Indicates a PR has been approved by a committer.
status/LGT1
Indicates that a PR has LGTM 1.
type/enhancement
The issue or PR belongs to an enhancement.
type/4.0-cherry-pick
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 #16838 to release-4.0
What problem does this PR solve?
Issue Number: close #xxx
Problem Summary:
When txn1, txn2 meet txn1's lock, and txn1 is large txn that modify many keys
both txn1, txn2 will try to resolve(after check txn status) the whole region even if txn1 meet lock at k1 and txn2 meet lock at k2.
we can deduplicate resolve requests that try to resolve the whole region.
What is changed and how it works?
Proposal: xxx
What's Changed:
At first glance, we should do it in LockResolver, but the question is it's hard to maintain backoff behavior at LockResolver level:
if we collapse multiple lock requests into one request at LockResolver level, working request maybe meet many error and backoff(e.g. regionMiss, notLeader, kvRpc...), we are hard to let those backoff info feedback to collapsed requests that waiting for working request.
so this PR chooses to do it in lower level ---- at TiClient that this level, we only need to take care context.Cancel and timeout.
How it Works:
collapse multi resolve request into one request using singleflight.
and chose
DoChan
to impl request level timeout and context.CancelRelated changes
Check List
Tests
Side effects
Release note
collapse duplicate resolve locks in region requests
This change is