-
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
session: fix panic when storing outdated plans from plan cache (#19296) #20246
Merged
eurekaka
merged 6 commits into
pingcap:release-4.0
from
ti-srebot:release-4.0-486e473a86e9
Oct 14, 2020
Merged
session: fix panic when storing outdated plans from plan cache (#19296) #20246
eurekaka
merged 6 commits into
pingcap:release-4.0
from
ti-srebot:release-4.0-486e473a86e9
Oct 14, 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
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
/run-all-tests |
ti-srebot
added
challenge-program
difficulty/easy
epic/plan-cache
sig/execution
SIG execution
sig/planner
SIG: Planner
type/4.0-cherry-pick
type/bugfix
This PR fixes a bug.
labels
Sep 27, 2020
ti-srebot
requested review from
LittleFall,
qw4990,
winoros and
wjhuang2016
September 27, 2020 06:57
/run-check_dev |
wjhuang2016
reviewed
Sep 27, 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
qw4990
approved these changes
Oct 9, 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
ti-srebot
added
status/LGT2
Indicates that a PR has LGTM 2.
and removed
status/LGT1
Indicates that a PR has LGTM 1.
labels
Oct 9, 2020
/merge |
ti-srebot
added
the
status/can-merge
Indicates a PR has been approved by a committer.
label
Oct 9, 2020
/run-all-tests |
@ti-srebot merge failed. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
challenge-program
epic/plan-cache
sig/execution
SIG execution
sig/planner
SIG: Planner
status/can-merge
Indicates a PR has been approved by a committer.
status/LGT2
Indicates that a PR has LGTM 2.
type/bugfix
This PR fixes a bug.
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 #19296 to release-4.0
What problem does this PR solve?
Issue Number: close #19192
Problem Summary:
Panic instead of error for queries when plan cache is enabled.
What is changed and how it works?
What's Changed:
Reset
session.currentPlan
to nil after storing it intoProcessInfo
.How it Works:
The root cause of the panic is that, if a query raises error before storing its plan into
session.currentPlan
, e.g, error happens in optimizer, then thesession.currentPlan
is not updated, i.e, it is the plan for the former query, so after returned todispatch
->SetProcessInfo
, the plan is accessed again, while the params have already gone, so panic happens.Reset
session.currentPlan
to nil after storing it intoProcessInfo
, then for the next query, even if it fails to updatesession.currentPlan
, there is no risk to access an outdated plan then.Related changes
Check List
Tests
Side effects
N/A
Release note