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 ch...@apache.org on 2014/09/10 13:50:27 UTC

svn commit: r1623973 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java

Author: chetanm
Date: Wed Sep 10 11:50:26 2014
New Revision: 1623973

URL: http://svn.apache.org/r1623973
Log:
OAK-2090 - Improve logging in compaction and cleanup operation in SegmentMK

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1623973&r1=1623972&r2=1623973&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Wed Sep 10 11:50:26 2014
@@ -27,6 +27,7 @@ import static java.lang.String.format;
 import static java.util.Collections.singletonMap;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
+import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 
 import java.io.File;
@@ -47,6 +48,7 @@ import java.util.concurrent.atomic.Atomi
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import com.google.common.base.Stopwatch;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob;
 import org.apache.jackrabbit.oak.plugins.segment.Compactor;
@@ -256,16 +258,17 @@ public class FileStore implements Segmen
                     @Override
                     public void run() {
                         log.info("TarMK compaction started");
-                        long time = System.currentTimeMillis();
+                        Stopwatch watch = Stopwatch.createStarted();
                         CompactionGainEstimate estimate = estimateCompactionGain();
                         long gain = estimate.estimateCompactionGain();
-                        time = System.currentTimeMillis() - time;
                         if (gain >= 10) {
                             log.info(
-                                    "Estimated compaction in {}ms, gain is {}% ({}/{}), so running compaction",
-                                    new Object[] { time, gain,
-                                            estimate.getReachableSize(),
-                                            estimate.getTotalSize() });
+                                    "Estimated compaction in {}, gain is {}% ({}/{}) or ({}/{}), so running compaction",
+                                    watch, gain,
+                                    estimate.getReachableSize(),
+                                    estimate.getTotalSize(),
+                                    humanReadableByteCount(estimate.getReachableSize()),
+                                    humanReadableByteCount(estimate.getTotalSize()));
                             if (!pauseCompaction) {
                                 compact();
                             } else {
@@ -273,10 +276,12 @@ public class FileStore implements Segmen
                             }
                         } else {
                             log.info(
-                                    "Estimated compaction in {}ms, gain is {}% ({}/{}), so skipping compaction for now",
-                                    new Object[] { time, gain,
-                                            estimate.getReachableSize(),
-                                            estimate.getTotalSize() });
+                                    "Estimated compaction in {}ms, gain is {}% ({}/{}) or ({}/{}), so skipping compaction for now",
+                                    watch, gain,
+                                    estimate.getReachableSize(),
+                                    estimate.getTotalSize(),
+                                    humanReadableByteCount(estimate.getReachableSize()),
+                                    humanReadableByteCount(estimate.getTotalSize()));
                         }
                         cleanupNeeded.set(true);
                     }
@@ -439,8 +444,10 @@ public class FileStore implements Segmen
      * discarded) if doing so releases more than 25% of the space in a tar file.
      */
     public synchronized void cleanup() throws IOException {
-        long start = System.nanoTime();
-        log.info("TarMK revision cleanup started");
+        Stopwatch watch = Stopwatch.createStarted();
+        long initialSize = size();
+        log.info("TarMK revision cleanup started. Current repository size {}",
+                humanReadableByteCount(initialSize));
 
         // Suggest to the JVM that now would be a good time
         // to clear stale weak references in the SegmentTracker
@@ -470,9 +477,11 @@ public class FileStore implements Segmen
             }
         }
         readers = list;
-
-        log.info("TarMK revision cleanup completed in {}ms",
-                MILLISECONDS.convert(System.nanoTime() - start, NANOSECONDS));
+        long finalSize = size();
+        log.info("TarMK revision cleanup completed in {}. Post cleanup size is {} " +
+                "and space reclaimed {}", watch,
+                humanReadableByteCount(finalSize),
+                humanReadableByteCount(initialSize - finalSize));
     }
 
     /**