Storages: Shutdown the LocalIndexScheduler before shutting down PageStorage/DeltaMergeStore (#9712) #9728
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.
This is an automated cherry-pick of #9712
What problem does this PR solve?
Issue Number: close #9714
Problem Summary:
Checkout the logging in issue.
From "Invalid page id, entry not exist [page_id=451.26] [resolve_id=451.26]" and the StackTrace
DB::DM::Segment::restoreSegment(std::__1::shared_ptr<DB::Logger> const&, DB::DM::DMContext&, unsigned long) dbms/src/Storages/DeltaMerge/Segment.cpp:427
we can know that something is wrong when restoring the StableValueSpace of Segment. After adding some debugging message, we know that the error comes from restoring table_id=451, segment_id=8822.Then dump the BlobData from PageStorage "meta". We found that the last two records persisted on disk is invalid as a SegmentMetaInfo.
Before the error happen, we saw that the table_id=451, segment_id=8822 had applied a
SegmentUpdateMeta
task afterDeltaMergeStore::shutdown
.Segment::replaceStableMetaVersion
will access to a already shutdown PageStorage. Causing the WriteBatch wrote broken data.What is changed and how it works?
LocalIndexerScheduler::shutdown()
and ensure the running task are all finished before shutting down the GlobalPageStorage inContextShared::shutdown()
.restoreSegment
failedCheck List
Tests
Side effects
Documentation
Release note