This is an automated email from the ASF dual-hosted git repository.

joscorbe pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new b2d89194a9 OAK-11795: Fix FullGC Audit Logs when executed via 
revisions command (#2377)
b2d89194a9 is described below

commit b2d89194a941b8741797a8e4d90bd95d5438a5bd
Author: José Andrés Cordero Benítez <[email protected]>
AuthorDate: Thu Jul 10 15:05:24 2025 +0200

    OAK-11795: Fix FullGC Audit Logs when executed via revisions command (#2377)
---
 .../jackrabbit/oak/run/RevisionsCommand.java       |  6 +++--
 .../oak/plugins/document/RevisionsCommandTest.java | 27 ++++++++++++++++++++++
 2 files changed, 31 insertions(+), 2 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 1a165b4b49..6f765b12d4 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
@@ -218,7 +218,7 @@ public class RevisionsCommand implements Command {
                             "nodes for Full GC which are not accessed recently 
(currentTime - lastModifiedTime > fullGcMaxAge). Default: 86400 (one day)")
                     
.withOptionalArg().ofType(Long.class).defaultsTo(TimeUnit.DAYS.toSeconds(1));
             fullGCAuditLoggingEnabled = 
parser.accepts("fullGCAuditLoggingEnabled", "Enable audit logging for Full GC")
-                    .withOptionalArg().ofType(Boolean.class).defaultsTo(FALSE);
+                    .withRequiredArg().ofType(Boolean.class).defaultsTo(FALSE);
             exportMetrics = parser.accepts("exportMetrics",
                     "type, URI to export the metrics and optional metadata all 
delimeted by semi-colon(;)").withRequiredArg();
         }
@@ -321,7 +321,7 @@ public class RevisionsCommand implements Command {
         }
 
         Boolean isFullGCAuditLoggingEnabled() {
-            return options.has(fullGCAuditLoggingEnabled);
+            return options.valueOf(fullGCAuditLoggingEnabled);
         }
 
         boolean exportMetrics() {
@@ -400,6 +400,7 @@ public class RevisionsCommand implements Command {
         builder.setFullGCBatchSize(options.getFullGcBatchSize());
         builder.setFullGCProgressSize(options.getFullGcProgressSize());
         
builder.setFullGcMaxAgeMillis(SECONDS.toMillis(options.getFullGcMaxAge()));
+        
builder.setFullGCAuditLoggingEnabled(options.isFullGCAuditLoggingEnabled());
 
         // create a VersionGCSupport while builder is read-write
         VersionGCSupport gcSupport = builder.createVersionGCSupport();
@@ -424,6 +425,7 @@ public class RevisionsCommand implements Command {
         System.out.println("EmbeddedVerification is enabled : " + 
gc.isEmbeddedVerificationEnabled());
         System.out.println("ResetFullGC is enabled : " + 
options.isResetFullGC());
         System.out.println("Compaction is enabled : " + 
options.doCompaction());
+        System.out.println("FullGCAuditLoggingEnabled : " + 
builder.isFullGCAuditLoggingEnabled());
         System.out.println("IncludePaths are : " + 
sortedSet(gc.getFullGCIncludePaths()));
         System.out.println("ExcludePaths are : " + 
sortedSet(gc.getFullGCExcludePaths()));
         System.out.println("FullGcMode is : " + 
VersionGarbageCollector.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 3fc023b6f8..1bc4669e0f 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
@@ -372,6 +372,33 @@ public class RevisionsCommandTest {
         assertTrue(errOutput.contains("--path or --entireRepo option is 
required for fullGC command"));
     }
 
+    @Test
+    public void auditLoggingEnabled() {
+        ns.dispose();
+
+        String output = captureSystemOut(new RevisionsCmd("fullGC", 
"--entireRepo", "--fullGCAuditLoggingEnabled", "true"));
+        assertTrue(output.contains("FullGCAuditLoggingEnabled : true"));
+        assertTrue(output.contains("starting gc collect"));
+    }
+
+    @Test
+    public void auditLoggingDisabled() {
+        ns.dispose();
+
+        String output = captureSystemOut(new RevisionsCmd("fullGC", 
"--entireRepo", "--fullGCAuditLoggingEnabled", "false"));
+        assertTrue(output.contains("FullGCAuditLoggingEnabled : false"));
+        assertTrue(output.contains("starting gc collect"));
+    }
+
+    @Test
+    public void auditLoggingNotSet() {
+        ns.dispose();
+
+        String output = captureSystemOut(new RevisionsCmd("fullGC", 
"--entireRepo"));
+        assertTrue(output.contains("FullGCAuditLoggingEnabled : false"));
+        assertTrue(output.contains("starting gc collect"));
+    }
+
     @Test
     public void fullGCWithEmbeddedWithPath() {
         ns.dispose();

Reply via email to