This is an automated email from the ASF dual-hosted git repository. daim pushed a commit to branch DetailedGC/OAK-10199 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 66e878ba88dd83b3349b934ad0b95f1ef24acbaf Author: Rishabh Kumar <[email protected]> AuthorDate: Mon Jun 19 23:04:33 2023 +0530 OAK-10199 : added check to include oldestId when running detailedGc very first time --- .../plugins/document/rdb/RDBVersionGCSupport.java | 20 ++++++++++++-------- .../oak/plugins/document/VersionGCSupportTest.java | 2 +- .../plugins/document/VersionGarbageCollectorIT.java | 3 ++- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java index 0d2f678911..6e49e8eccd 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java @@ -95,15 +95,19 @@ public class RDBVersionGCSupport extends VersionGCSupport { /** * Returns documents that have a {@link NodeDocument#MODIFIED_IN_SECS} value - * within the given range .The two passed modified timestamps are in milliseconds + * within the given range and are greater than given @{@link NodeDocument#ID}. + * <p> + * The two passed modified timestamps are in milliseconds * since the epoch and the implementation will convert them to seconds at * the granularity of the {@link NodeDocument#MODIFIED_IN_SECS} field and * then perform the comparison. + * <p/> * - * @param fromModified the lower bound modified timestamp (inclusive) - * @param toModified the upper bound modified timestamp (exclusive) - * @param limit the limit of documents to return - * @param fromId the lower bound {@link NodeDocument#ID} (exclusive) + * @param fromModified the lower bound modified timestamp (inclusive) + * @param toModified the upper bound modified timestamp (exclusive) + * @param limit the limit of documents to return + * @param fromId the lower bound {@link NodeDocument#ID} + * @param includeFromId boolean indicating whether {@code fromId} is inclusive or not * @return matching documents. */ @Override @@ -111,11 +115,11 @@ public class RDBVersionGCSupport extends VersionGCSupport { final String fromId) { List<QueryCondition> conditions = of(new QueryCondition(MODIFIED_IN_SECS, "<", getModifiedInSecs(toModified)), new QueryCondition(MODIFIED_IN_SECS, ">=", getModifiedInSecs(fromModified)), - new QueryCondition(ID, ">", of(fromId))); + new QueryCondition(ID, includeFromId ? ">=" : ">", of(fromId))); if (MODE == 1) { return getIterator(EMPTY_KEY_PATTERN, conditions); } else { - return store.queryAsIterable(NODES, fromId, null, EMPTY_KEY_PATTERN, conditions, limit, of(MODIFIED_IN_SECS, ID)); + return store.queryAsIterable(NODES, null, null, EMPTY_KEY_PATTERN, conditions, limit, of(MODIFIED_IN_SECS, ID)); } } @@ -286,7 +290,7 @@ public class RDBVersionGCSupport extends VersionGCSupport { LOG.info("getOldestModifiedDoc() <- start"); Iterable<NodeDocument> modifiedDocs = null; try { - modifiedDocs = getModifiedDocs(0L, clock.getTime(), 1, MIN_ID_VALUE); + modifiedDocs = getModifiedDocs(0L, clock.getTime(), 1, MIN_ID_VALUE, false); doc = modifiedDocs.iterator().hasNext() ? modifiedDocs.iterator().next() : NULL; } catch (DocumentStoreException ex) { LOG.error("getOldestModifiedDoc()", ex); diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupportTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupportTest.java index 565600a143..acf536fd5e 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupportTest.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupportTest.java @@ -331,7 +331,7 @@ public class VersionGCSupportTest { } private void assertModified(long fromSeconds, long toSeconds, long num) { - Iterable<NodeDocument> docs = gcSupport.getModifiedDocs(SECONDS.toMillis(fromSeconds), SECONDS.toMillis(toSeconds), 10, MIN_ID_VALUE); + Iterable<NodeDocument> docs = gcSupport.getModifiedDocs(SECONDS.toMillis(fromSeconds), SECONDS.toMillis(toSeconds), 10, MIN_ID_VALUE, false); assertEquals(num, stream(docs.spliterator(), false).count()); assertTrue(isInOrder(docs, (o1, o2) -> comparing(NodeDocument::getModified).thenComparing(Document::getId).compare(o1, o2))); } diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java index 268ff16f09..155a81b557 100644 --- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java +++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollectorIT.java @@ -113,6 +113,7 @@ import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -1294,7 +1295,7 @@ public class VersionGarbageCollectorIT { // OAK-10370 END - + private void gcSplitDocsInternal(String subNodeName) throws Exception { long maxAge = 1; //hrs long delta = TimeUnit.MINUTES.toMillis(10);
