txn: fix the panic when memdb grows beyond quota (#39621)#39640
txn: fix the panic when memdb grows beyond quota (#39621)#39640ti-chi-bot merged 3 commits intopingcap:release-6.5from
Conversation
Signed-off-by: ekexium <eke@fastmail.com>
Signed-off-by: ekexium <eke@fastmail.com>
|
[REVIEW NOTIFICATION] This pull request has been approved by:
To complete the pull request process, please ask the reviewers in the list to review by filling The full list of commands accepted by this bot can be found here. DetailsReviewer can indicate their review by submitting an approval review. |
|
/merge |
|
This pull request has been accepted and is ready to merge. DetailsCommit hash: 5765cee |
|
@ti-chi-bot: Your PR was out of date, I have automatically updated it for you. If the CI test fails, you just re-trigger the test that failed and the bot will merge the PR for you after the CI passes. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository. |
This is an automated cherry-pick of #39621
Signed-off-by: ekexium eke@fastmail.com
What problem does this PR solve?
Issue Number: close #39611
Problem Summary:
The sequence of events that leads to the panic is:
membuffer.set -> enlarge -> onMemChange -> memory tracker decides to panic -> deferred releasing current staging buffer in AddRecord -> revert to last checkpoint
When reverting to last checkpoint, memdb iterates over the nodes backwards, here is why it panics:
The latest block of the arena is in an intermediate state: it is just allocated but no data has been written yet. So its length is 0. While during the iteration we assume the length cannot be 0.
What is changed and how it works?
Don't let memdb call the callback when the block is in intermediate state. Instead call it after any content is inserted after a new block is allocated.
Check List
Tests
Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.