feat(storage): refactor and support local state store flushed snapshot reader #20153
+205
−116
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.
I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
Previously in the sink log store, for log reader, we use methods in
StateStore
to access the data flushed by log writer. Methods inStateStore
will read all shards (aka HummockReadVersion) of thetable_id
on the same CN. However, since the log reader is always in the same SinkExecutor as log writer, it actually only needs to read the shard that belongs to the writer, and usingStateStore
will unnecessarily read more unrelated data.In this PR, we will add a new method
new_flushed_snapshot_reader
toLocalStateStore
, whose return type is a new associated typeFlushedSnapshotReader
that should implement theStateStoreRead
trait.The semantic of this new
FlushedSnapshotReader
is, it can read the uncommitted data written by the parentLocalStateStore
as long as the data has beenflushe
ed by the parentLocalStateStore
. SuchFlushedSnapshotReader
will only read the same shard as the local state store.The KvLogStoreReader will change to use this
FlushedSnapshotReader
to read to avoid reading unnecessary data in other shards in the CN.Checklist
Documentation
Release note