This is an automated email from the ASF dual-hosted git repository. daim pushed a commit to branch OAK-11068 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit dff7200121f3b4777a4030c27209db8635dbc794 Author: Rishabh Kumar <[email protected]> AuthorDate: Wed Aug 28 23:08:02 2024 +0530 OAK-11068 : added fullGcMode to oak-run --- .../org/apache/jackrabbit/oak/run/RevisionsCommand.java | 11 ++++++++++- .../oak/plugins/document/RevisionsCommandTest.java | 13 +++++++++++++ .../oak/plugins/document/VersionGarbageCollector.java | 2 +- .../oak/plugins/document/VersionGarbageCollectorIT.java | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java index 27bfb5da5c..b10ad2f38b 100644 --- a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java +++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RevisionsCommand.java @@ -103,7 +103,7 @@ public class RevisionsCommand implements Command { private static final List<String> LOGGER_NAMES = of( "org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector", "org.apache.jackrabbit.oak.plugins.document.NodeDocumentSweeper", - "org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.auditDGC", + "org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.auditFGC", "org.apache.jackrabbit.oak.plugins.document.mongo.MongoVersionGCSupport", "org.apache.jackrabbit.oak.plugins.document.VersionGCRecommendations" ); @@ -132,6 +132,7 @@ public class RevisionsCommand implements Command { final OptionSpec<?> compact; final OptionSpec<Boolean> dryRun; final OptionSpec<Boolean> embeddedVerification; + final OptionSpec<Integer> fullGcMode; RevisionsOptions(String usage) { super(usage); @@ -154,6 +155,8 @@ public class RevisionsCommand implements Command { "during dryRun mode i.e. will verify the effect of fullGC operation on each document after " + "applying the changes in memory and will raise flag if it can cause issues") .withRequiredArg().ofType(Boolean.class).defaultsTo(TRUE); + fullGcMode = parser.accepts("fullGcMode", "Mode of fullGC") + .withRequiredArg().ofType(Integer.class).defaultsTo(0); continuous = parser .accepts("continuous", "run continuously (collect only)"); fullGCOnly = parser @@ -208,6 +211,10 @@ public class RevisionsCommand implements Command { return embeddedVerification.value(options); } + int fullGcMode() { + return fullGcMode.value(options); + } + long getOlderThan() { return olderThan.value(options); } @@ -315,6 +322,7 @@ public class RevisionsCommand implements Command { builder.setFullGCEnabled(fullGCEnabled); builder.setFullGCIncludePaths(options.includePaths()); builder.setFullGCExcludePaths(options.excludePaths()); + builder.setFullGCMode(options.fullGcMode()); // create a VersionGCSupport while builder is read-write VersionGCSupport gcSupport = builder.createVersionGCSupport(); @@ -342,6 +350,7 @@ public class RevisionsCommand implements Command { System.out.println("Compaction is enabled : " + options.doCompaction()); System.out.println("IncludePaths are : " + Arrays.toString(options.includePaths())); System.out.println("ExcludePaths are : " + Arrays.toString(options.excludePaths())); + System.out.println("FullGcMode is : " + options.fullGcMode()); VersionGarbageCollector gc = createVersionGC(builder.build(), gcSupport, isFullGCEnabled(builder), options.isDryRun(), isEmbeddedVerificationEnabled(builder), builder.getFullGCMode()); diff --git a/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionsCommandTest.java b/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionsCommandTest.java index 749c5f9065..d91bb80acd 100644 --- a/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionsCommandTest.java +++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionsCommandTest.java @@ -195,6 +195,19 @@ public class RevisionsCommandTest { assertTrue(output.contains("starting gc collect")); assertTrue(output.contains("IncludePaths are : [/]")); assertTrue(output.contains("ExcludePaths are : []")); + assertTrue(output.contains("FullGcMode is : 0")); + } + + @Test + public void fullGCWithMode() { + ns.dispose(); + + String output = captureSystemOut(new RevisionsCmd("fullGC", "--entireRepo", "--fullGcMode", "3")); + assertTrue(output.contains("DryRun is enabled : true")); + assertTrue(output.contains("ResetFullGC is enabled : false")); + assertTrue(output.contains("Compaction is enabled : false")); + assertTrue(output.contains("starting gc collect")); + assertTrue(output.contains("FullGcMode is : 3")); } @Test diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java index 5ba453a95d..2f00e23803 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java @@ -121,7 +121,7 @@ public class VersionGarbageCollector { private static final String STATUS_IDLE = "IDLE"; private static final String STATUS_INITIALIZING = "INITIALIZING"; private static final Logger log = getLogger(VersionGarbageCollector.class); - private static final Logger AUDIT_LOG = getLogger(VersionGarbageCollector.class.getName() + ".auditDGC"); + private static final Logger AUDIT_LOG = getLogger(VersionGarbageCollector.class.getName() + ".auditFGC"); /** * Split document types which can be safely garbage collected 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 2805d52945..fe26f438b0 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 @@ -1914,7 +1914,7 @@ public class VersionGarbageCollectorIT { createSecondaryStore(LeaseCheckMode.LENIENT); // while "2" was written to node1/a via an unmerged branch commit, - // it should not have been made visible through DGC/sweep combo + // it should not have been made visible through FGC/sweep combo invalidateCaches(store2); assertEquals("1", store2.getRoot().getChildNode("node1").getProperty("a").getValue(Type.STRING)); assertEquals("4", store2.getRoot().getChildNode("node1").getProperty("b").getValue(Type.STRING));
