diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c044a14dda..9ad723dfa28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,9 @@ as necessary. Empty sections will not end in the release notes. ### Fixes +- GC: Fix behavior of cutoff policy "num commits", it was 'off by one' and considered the n-th commit as non-live + vs the n-th commit as the last live one. + ### Commits ## [0.92.1] Release (2024-07-13) diff --git a/gc/gc-base/src/main/java/org/projectnessie/gc/identify/NumCommitsCutoffPolicy.java b/gc/gc-base/src/main/java/org/projectnessie/gc/identify/NumCommitsCutoffPolicy.java index 836ba5a64f0..c50583421ed 100644 --- a/gc/gc-base/src/main/java/org/projectnessie/gc/identify/NumCommitsCutoffPolicy.java +++ b/gc/gc-base/src/main/java/org/projectnessie/gc/identify/NumCommitsCutoffPolicy.java @@ -29,7 +29,7 @@ final class NumCommitsCutoffPolicy implements CutoffPolicy { @Override public boolean isCutoff(@Nonnull Instant commitTime, int numCommits) { - return numCommits >= commits; + return numCommits > commits; } @Override diff --git a/gc/gc-base/src/test/java/org/projectnessie/gc/roundtrip/TestMarkAndSweep.java b/gc/gc-base/src/test/java/org/projectnessie/gc/roundtrip/TestMarkAndSweep.java index 7ee58a5a89f..c8b0f9a85cc 100644 --- a/gc/gc-base/src/test/java/org/projectnessie/gc/roundtrip/TestMarkAndSweep.java +++ b/gc/gc-base/src/test/java/org/projectnessie/gc/roundtrip/TestMarkAndSweep.java @@ -169,7 +169,7 @@ long liveContentsCount() { PerRefCutoffPolicySupplier cutOffPolicySupplier() { Instant cutOff = now.minus(numCommits - numExpired, ChronoUnit.SECONDS); - return atTimestamp ? r -> atTimestamp(cutOff) : r -> numCommits((int) numCommits); + return atTimestamp ? r -> atTimestamp(cutOff) : r -> numCommits((int) numCommits - 1); } }