Fix for index block appearing as a flushed index block, now explicit check has on disk segment #3622
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.
What this PR does / why we need it:
This changes the logic to detect whether a block is flushed or not (and consequently can GC in-memory series from index). Previously was checking that the block had been sealed (had at least started transition to on disk segment) and that no in-memory series were held by block any longer. This is a poor check since in-memory series are held by the active block not the block for that block start, so would return true even though the block had not been flushed.
Now the check is much more robust since it checks the result of the call to
block.Tick(...)
which explicitly returns whether it has a bootstrapped segment (i.e. a segment which is an on disk segment) held as a reference or not, which is the root for the source of truth on whether the in-memory series for that block start can be GC'd or not.Special notes for your reviewer:
Does this PR introduce a user-facing and/or backwards incompatible change?:
Does this PR require updating code package or user-facing documentation?: