Skip to content
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

Isolation: Refactor resetting RCReadCheckTS internal flag #38174

Merged
merged 7 commits into from
Oct 17, 2022

Conversation

TonsnakeLin
Copy link
Contributor

@TonsnakeLin TonsnakeLin commented Sep 26, 2022

Signed-off-by: TonsnakeLin lpbgytong@163.com

What problem does this PR solve?

Issue Number: Ref #37226

Problem Summary:

What is changed and how it works?

In the past, TiDB reset the internal flag PessimisticRCTxnContextProvider::latestOracleTSValid in function (p *PessimisticRCTxnContextProvider) handleAfterQueryError and (p *PessimisticRCTxnContextProvider) handleAfterPessimisticLockError. This PR moved it to (p *PessimisticRCTxnContextProvider) OnStmtRetry, so that we can statistic the retry count because of RCCheckTS easily.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • No code

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

Please refer to Release Notes Language Style Guide to write a quality release note.

None

Signed-off-by: TonsnakeLin <lpbgytong@163.com>
@ti-chi-bot
Copy link
Member

ti-chi-bot commented Sep 26, 2022

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • cfzjywxk
  • ekexium

To complete the pull request process, please ask the reviewers in the list to review by filling /cc @reviewer in the comment.
After your PR has acquired the required number of LGTMs, you can assign this pull request to the committer in the list by filling /assign @committer in the comment to help you merge this pull request.

The full list of commands accepted by this bot can be found here.

Reviewer can indicate their review by submitting an approval review.
Reviewer can cancel approval by submitting a request changes review.

@ti-chi-bot ti-chi-bot added release-note-none Denotes a PR that doesn't merit a release note. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 26, 2022
@TonsnakeLin
Copy link
Contributor Author

@cfzjywxk @ekexium I unified resetting internal flags of RCReadCheckTS and RCWriteCheckTS, so that we can statistic it at same place, Thanks for reviewing this PR.

require.Equal(t, 1, count)

tk.MustExec("drop table t1")
require.NoError(t, failpoint.Disable("github.com/pingcap/tidb/sessiontxn/isolation/CallOnStmtRetry"))
Copy link
Contributor

Choose a reason for hiding this comment

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

Better to disable the failpoint in a defer func to avoid affecting other concurrent cases if an error happens.

Signed-off-by: TonsnakeLin <lpbgytong@163.com>
@ekexium
Copy link
Contributor

ekexium commented Sep 27, 2022

The change itself looks good. I'm jsut wondering how you will tell the reason of a statement retry.

Copy link
Contributor

@cfzjywxk cfzjywxk left a comment

Choose a reason for hiding this comment

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

LGTM

@ti-chi-bot ti-chi-bot added the status/LGT1 Indicates that a PR has LGTM 1. label Sep 27, 2022
@TonsnakeLin
Copy link
Contributor Author

The change itself looks good. I'm jsut wondering how you will tell the reason of a statement retry.

I mentioned it at PR #37226

@@ -52,6 +52,9 @@ var TsoWaitCount stringutil.StringerStr = "tsoWaitCount"
// TsoUseConstantCount is the key for constant tso counter
var TsoUseConstantCount stringutil.StringerStr = "tsoUseConstantCount"

// CallOnStmtRetryCount is the key for recording calling OnStmtRetry at RC isolation level
var CallOnStmtRetryCount stringutil.StringerStr = "callOnStmtRetryCount"

// AssertLockErr is used to record the lock errors we encountered
// Only for test
var AssertLockErr stringutil.StringerStr = "assertLockError"
Copy link
Member

Choose a reason for hiding this comment

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

Caen they be defined as const variables?

@ekexium
Copy link
Contributor

ekexium commented Sep 28, 2022

I See. But the write conflict error is unavailable in OnStmtRetry, how could you tell the reason?

@TonsnakeLin
Copy link
Contributor Author

I See. But the write conflict error is unavailable in OnStmtRetry, how could you tell the reason?

Yes, I I realized this. Maybe it's not suitable to to it in function OnStmtRetry, or we can add a new flag in RCContextProvider, but it's ugly.
IMO, it maybe still collect the RCCheckTS WriteConflict in function (p *PessimisticRCTxnContextProvider) handleAfterQueryError and (p *PessimisticRCTxnContextProvider) handleAfterPessimisticLockError as I said in #37226.
But it doesn't affect this refactoring.

@ti-chi-bot ti-chi-bot added status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Sep 28, 2022
@wuhuizuo
Copy link
Contributor

/run-check-dev

@TonsnakeLin
Copy link
Contributor Author

/run-check_dev

@ti-chi-bot ti-chi-bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Sep 29, 2022
…r_rc_read_checkts

Signed-off-by: TonsnakeLin <lpbgytong@163.com>
@ti-chi-bot ti-chi-bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 17, 2022
@TonsnakeLin
Copy link
Contributor Author

/run-unit-test

@TonsnakeLin
Copy link
Contributor Author

@cfzjywxk please merge it ,thank you.

@cfzjywxk
Copy link
Contributor

/merge

@ti-chi-bot
Copy link
Member

This pull request has been accepted and is ready to merge.

Commit hash: fc0a435

@ti-chi-bot ti-chi-bot added the status/can-merge Indicates a PR has been approved by a committer. label Oct 17, 2022
@ti-chi-bot ti-chi-bot merged commit dc22325 into pingcap:master Oct 17, 2022
@sre-bot
Copy link
Contributor

sre-bot commented Oct 17, 2022

TiDB MergeCI notify

🔴 Bad News! New failing [1] after this pr merged.
These new failed integration tests seem to be caused by the current PR, please try to fix these new failed integration tests, thanks!

CI Name Result Duration Compare with Parent commit
idc-jenkins-ci-tidb/integration-ddl-test 🟥 failed 1, success 5, total 6 28 min New failing
idc-jenkins-ci-tidb/integration-common-test 🔴 failed 2, success 15, total 17 13 min Existing failure
idc-jenkins-ci/integration-cdc-test ✅ all 37 tests passed 33 min Fixed
idc-jenkins-ci-tidb/common-test 🟢 all 11 tests passed 8 min 38 sec Existing passed
idc-jenkins-ci-tidb/sqllogic-test-2 🟢 all 28 tests passed 8 min 30 sec Existing passed
idc-jenkins-ci-tidb/tics-test 🟢 all 1 tests passed 5 min 38 sec Existing passed
idc-jenkins-ci-tidb/sqllogic-test-1 🟢 all 26 tests passed 3 min 29 sec Existing passed
idc-jenkins-ci-tidb/mybatis-test 🟢 all 1 tests passed 2 min 58 sec Existing passed
idc-jenkins-ci-tidb/integration-compatibility-test 🟢 all 1 tests passed 2 min 49 sec Existing passed
idc-jenkins-ci-tidb/plugin-test 🟢 build success, plugin test success 4min Existing passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release-note-none Denotes a PR that doesn't merit a release note. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants