You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by am...@apache.org on 2018/07/27 07:28:14 UTC

svn commit: r1836782 - /jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java

Author: amitj
Date: Fri Jul 27 07:28:14 2018
New Revision: 1836782

URL: http://svn.apache.org/viewvc?rev=1836782&view=rev
Log:
OAK-7662: Allow MarkSweepGarbageCollector to retain output files

- Added a setTraceOutput(boolean) to enable retention of files

Modified:
    jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java

Modified: jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java?rev=1836782&r1=1836781&r2=1836782&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java (original)
+++ jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java Fri Jul 27 07:28:14 2018
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.blob;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Lists.newArrayList;
 import static java.io.File.createTempFile;
 import static org.apache.commons.io.FileUtils.copyFile;
@@ -132,6 +133,8 @@ public class MarkSweepGarbageCollector i
 
     private final OperationStatsCollector statsCollector;
 
+    private boolean traceOutput;
+
     /**
      * Creates an instance of MarkSweepGarbageCollector
      *
@@ -161,6 +164,7 @@ public class MarkSweepGarbageCollector i
             throws IOException {
         this.executor = executor;
         this.blobStore = blobStore;
+        checkNotNull(blobStore, "BlobStore cannot be null");
         this.marker = marker;
         this.batchCount = batchCount;
         this.maxLastModifiedInterval = maxLastModifiedInterval;
@@ -336,7 +340,7 @@ public class MarkSweepGarbageCollector i
             throw e;
         } finally {
             statsCollector.updateDuration(sw.elapsed(TimeUnit.MILLISECONDS), TimeUnit.MILLISECONDS);
-            if (!LOG.isTraceEnabled()) {
+            if (!LOG.isTraceEnabled() && !traceOutput) {
                 Closeables.close(fs, threw);
             }
         }
@@ -660,13 +664,17 @@ public class MarkSweepGarbageCollector i
                             blobStore, fs.getGcCandidates().getAbsolutePath());
             }
         } finally {
-            if (!LOG.isTraceEnabled() && candidates == 0) {
+            if (!traceOutput && (!LOG.isTraceEnabled() && candidates == 0)) {
                 Closeables.close(fs, threw);
             }
         }
         return candidates;
     }
 
+    public void setTraceOutput(boolean trace) {
+        traceOutput = trace;
+    }
+
     /**
      * BlobIdRetriever class to retrieve all blob ids.
      */