Invalidate threadlocal SV before incrementing super_version_number_
#11848
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.
CI has been hitting assertion error like
This is due to
Iterator::Refresh() passing in
cur_sv_number
instead ofsv->version_number
here:rocksdb/db/arena_wrapped_db_iter.cc
Lines 94 to 96 in 1c6faf3
super_version_number_
can be incremented before thread local SV is installed: https://github.com/facebook/rocksdb/blob/main/db/column_family.cc#L1287-L1306The optimization in remove unnecessary code in super version getter #11452 removed the check for SV number, such that
cur_sv_number > sv.version_number
is possible in the following code.Not sure why assertion only started failing after #10594, maybe it's because Refresh() is called more often in stress test.
Test plan: