[core] Reject a non-positive snapshot.expire.limit - #10355
Open
jackylee-ch wants to merge 1 commit into
Open
jackylee-ch wants to merge 1 commit into
jackylee-ch wants to merge 1 commit into
Conversation
snapshot.expire.limit is the maximum number of snapshots allowed to expire at a time. ExpireSnapshotsImpl validates retainMin and retainMax but not this option, so a non-positive value (0 is a natural "no limit" guess) caps maxExclusive at the earliest snapshot and silently expires nothing: snapshots and their data files are never reclaimed and disk grows unbounded, with no error. Validate it alongside the existing retainMin/retainMax checks, and cover the 0 and -1 cases with a test mirroring the retainMin rejection test.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Purpose
snapshot.expire.limitis "the maximum number of snapshots allowed to expire at a time" (default 50).ExpireSnapshotsImplvalidatessnapshot.num-retained.min/max, but not this option. A non-positive value (0 is a natural "no limit" guess) makesmaxExclusive = min(maxExclusive, earliest + maxDeletes)collapse toearliest, so the expiration loop never runs: snapshots and their data files are never reclaimed and disk grows unbounded, with no error or log.This rejects a non-positive
snapshot.expire.limitwith a clear message, consistent with the adjacentretainMin/retainMaxchecks.Tests
ExpireSnapshotsTest#testExpireRejectsNonPositiveLimit: assertsexpire()throwsIllegalArgumentExceptionfor limit0and-1, and that no snapshot is deleted — mirroringtestExpireRejectsNonPositiveRetainMin.API and Format
No change.
Documentation
No change.