feat: no staged commits in checkpoint/compaction #1374
Merged
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 changes are proposed in this pull request?
This PR adds new validation to ensure we don't write checkpoints/compaction whenever we have staged commits in the LogSegment. We want to prohibit this to prevent creating gaps in the log (if we allow checkpoint at version N but that version only has staged commit then old readers will break instead of just returning stale reads as in the intention of catalogManaged tables)
details
Since we generally treat staged commits as an encapsulated detail of
LogSegment, we expose a new internal apiLogSegment::validate_no_staged_commitsand inject calls in our checkpoint writer and log compaction writer to ensure we don't write checkpoints/compactions for log segments with staged commits.How was this change tested?
new UTs