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));

Reply via email to