Author: frm
Date: Tue Nov 22 13:59:53 2016
New Revision: 1770841

URL: http://svn.apache.org/viewvc?rev=1770841&view=rev
Log:
OAK-4957 - Add GC status information to SegmentRevisionGCMBean

Contribution by Andrei Dulceanu.

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/DelegatingGCMonitor.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitor.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitorTracker.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/LoggingGCMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
    
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
    
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreGCMonitor.java
    
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/DelegatingGCMonitor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/DelegatingGCMonitor.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/DelegatingGCMonitor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/DelegatingGCMonitor.java
 Tue Nov 22 13:59:53 2016
@@ -110,5 +110,12 @@ public class DelegatingGCMonitor impleme
             gcMonitor.cleaned(reclaimedSize, currentSize);
         }
     }
+    
+    @Override
+    public void updateStatus(String status) {
+        for (GCMonitor gcMonitor : gcMonitors) {
+            gcMonitor.updateStatus(status);
+        }
+    }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitor.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitor.java
 Tue Nov 22 13:59:53 2016
@@ -70,6 +70,12 @@ public interface GCMonitor {
      * @param currentSize    number of bytes after garbage collection
      */
     void cleaned(long reclaimedSize, long currentSize);
+    
+    /**
+     * The garbage collection entered a new phase e.g. idle, estimation, etc.
+     * @param status short summary of the GC phase
+     */
+    void updateStatus(String status);
 
     class Empty implements GCMonitor {
         @Override public void info(String message, Object[] arguments) { }
@@ -78,5 +84,6 @@ public interface GCMonitor {
         @Override public void skipped(String reason, Object[] arguments) { }
         @Override public void compacted() { }
         @Override public void cleaned(long reclaimedSize, long currentSize) { }
+        @Override public void updateStatus(String status) { }
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitorTracker.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitorTracker.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitorTracker.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/gc/GCMonitorTracker.java
 Tue Nov 22 13:59:53 2016
@@ -73,4 +73,10 @@ public class GCMonitorTracker extends Ab
         }
     }
 
+    @Override
+    public void updateStatus(String status) {
+        for (GCMonitor gcMonitor : getServices()) {
+            gcMonitor.updateStatus(status);
+        }
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/LoggingGCMonitor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/LoggingGCMonitor.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/LoggingGCMonitor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/LoggingGCMonitor.java
 Tue Nov 22 13:59:53 2016
@@ -67,4 +67,9 @@ public class LoggingGCMonitor implements
     @Override
     public void cleaned(long reclaimedSize, long currentSize) {
     }
+    
+    @Override
+    public void updateStatus(String status) {
+        
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC.java
 Tue Nov 22 13:59:53 2016
@@ -141,6 +141,12 @@ public interface SegmentRevisionGC {
      */
     @CheckForNull
     String getLastError();
+    
+    /**
+     * @return  last log message or {@code null} if none.
+     */
+    @Nonnull
+    String getLastLogMessage();
 
     /**
      * @return  current status.

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean.java
 Tue Nov 22 13:59:53 2016
@@ -150,7 +150,12 @@ public class SegmentRevisionGCMBean
     public String getLastError() {
         return fileStoreGCMonitor.getLastError();
     }
-
+    
+    @Override
+    public String getLastLogMessage() {
+        return fileStoreGCMonitor.getLastLogMessage();
+    }
+    
     @Nonnull
     @Override
     public String getStatus() {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
 Tue Nov 22 13:59:53 2016
@@ -36,6 +36,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.segment.SegmentWriterBuilder.segmentWriterBuilder;
 import static 
org.apache.jackrabbit.oak.segment.file.TarRevisions.EXPEDITE_OPTION;
 import static org.apache.jackrabbit.oak.segment.file.TarRevisions.timeout;
+import static org.apache.jackrabbit.oak.segment.compaction.SegmentGCStatus.*;
 
 import java.io.File;
 import java.io.IOException;
@@ -722,57 +723,63 @@ public class FileStore extends AbstractF
         }
 
         synchronized void run() throws IOException {
-            gcListener.info("TarMK GC #{}: started", 
GC_COUNT.incrementAndGet());
-            GCMemoryBarrier gcMemoryBarrier = new GCMemoryBarrier(
-                    sufficientMemory, gcListener, GC_COUNT.get(), gcOptions);
-
-            boolean sufficientEstimatedGain = true;
-            if (gcOptions.isEstimationDisabled()) {
-                gcListener.info("TarMK GC #{}: estimation skipped because it 
was explicitly disabled", GC_COUNT);
-            } else if (gcOptions.isPaused()) {
-                gcListener.info("TarMK GC #{}: estimation skipped because 
compaction is paused", GC_COUNT);
-            } else {
-                gcListener.info("TarMK GC #{}: estimation started", GC_COUNT);
-                Stopwatch watch = Stopwatch.createStarted();
-                Supplier<Boolean> cancel = new 
CancelCompactionSupplier(FileStore.this);
-                GCEstimation estimate = estimateCompactionGain(cancel);
-                if (cancel.get()) {
-                    gcListener.info("TarMK GC #{}: estimation interrupted: {}. 
Skipping compaction.", GC_COUNT, cancel);
-                    gcMemoryBarrier.close();
-                    return;
-                }
-
-                sufficientEstimatedGain = estimate.gcNeeded();
-                String gcLog = estimate.gcLog();
-                if (sufficientEstimatedGain) {
-                    gcListener.info(
-                            "TarMK GC #{}: estimation completed in {} ({} ms). 
{}",
-                            GC_COUNT, watch, watch.elapsed(MILLISECONDS), 
gcLog);
+            try {
+                gcListener.info("TarMK GC #{}: started", 
GC_COUNT.incrementAndGet());
+                GCMemoryBarrier gcMemoryBarrier = new GCMemoryBarrier(
+                        sufficientMemory, gcListener, GC_COUNT.get(), 
gcOptions);
+    
+                boolean sufficientEstimatedGain = true;
+                if (gcOptions.isEstimationDisabled()) {
+                    gcListener.info("TarMK GC #{}: estimation skipped because 
it was explicitly disabled", GC_COUNT);
+                } else if (gcOptions.isPaused()) {
+                    gcListener.info("TarMK GC #{}: estimation skipped because 
compaction is paused", GC_COUNT);
                 } else {
-                    gcListener.skipped(
-                            "TarMK GC #{}: estimation completed in {} ({} ms). 
{}",
-                            GC_COUNT, watch, watch.elapsed(MILLISECONDS), 
gcLog);
+                    gcListener.info("TarMK GC #{}: estimation started", 
GC_COUNT);
+                    gcListener.updateStatus(ESTIMATION.message());
+                    
+                    Stopwatch watch = Stopwatch.createStarted();
+                    Supplier<Boolean> cancel = new 
CancelCompactionSupplier(FileStore.this);
+                    GCEstimation estimate = estimateCompactionGain(cancel);
+                    if (cancel.get()) {
+                        gcListener.info("TarMK GC #{}: estimation interrupted: 
{}. Skipping compaction.", GC_COUNT, cancel);
+                        gcMemoryBarrier.close();
+                        return;
+                    }
+    
+                    sufficientEstimatedGain = estimate.gcNeeded();
+                    String gcLog = estimate.gcLog();
+                    if (sufficientEstimatedGain) {
+                        gcListener.info(
+                                "TarMK GC #{}: estimation completed in {} ({} 
ms). {}",
+                                GC_COUNT, watch, watch.elapsed(MILLISECONDS), 
gcLog);
+                    } else {
+                        gcListener.skipped(
+                                "TarMK GC #{}: estimation completed in {} ({} 
ms). {}",
+                                GC_COUNT, watch, watch.elapsed(MILLISECONDS), 
gcLog);
+                    }
                 }
-            }
-
-            if (sufficientEstimatedGain) {
-                if (!gcOptions.isPaused()) {
-                    logAndClear(segmentWriter.getNodeWriteTimeStats(), 
segmentWriter.getNodeCompactTimeStats());
-                    log(segmentWriter.getNodeCacheOccupancyInfo());
-                    int gen = compact();
-                    if (gen > 0) {
-                        fileReaper.add(cleanupOldGenerations(gen));
-                    } else if (gen < 0) {
-                        gcListener.info("TarMK GC #{}: cleaning up after 
failed compaction", GC_COUNT);
-                        fileReaper.add(cleanupGeneration(-gen));
+    
+                if (sufficientEstimatedGain) {
+                    if (!gcOptions.isPaused()) {
+                        logAndClear(segmentWriter.getNodeWriteTimeStats(), 
segmentWriter.getNodeCompactTimeStats());
+                        log(segmentWriter.getNodeCacheOccupancyInfo());
+                        int gen = compact();
+                        if (gen > 0) {
+                            fileReaper.add(cleanupOldGenerations(gen));
+                        } else if (gen < 0) {
+                            gcListener.info("TarMK GC #{}: cleaning up after 
failed compaction", GC_COUNT);
+                            fileReaper.add(cleanupGeneration(-gen));
+                        }
+                        logAndClear(segmentWriter.getNodeWriteTimeStats(), 
segmentWriter.getNodeCompactTimeStats());
+                        log(segmentWriter.getNodeCacheOccupancyInfo());
+                    } else {
+                        gcListener.skipped("TarMK GC #{}: compaction paused", 
GC_COUNT);
                     }
-                    logAndClear(segmentWriter.getNodeWriteTimeStats(), 
segmentWriter.getNodeCompactTimeStats());
-                    log(segmentWriter.getNodeCacheOccupancyInfo());
-                } else {
-                    gcListener.skipped("TarMK GC #{}: compaction paused", 
GC_COUNT);
                 }
+                gcMemoryBarrier.close();
+            } finally {
+                gcListener.updateStatus(IDLE.message());
             }
-            gcMemoryBarrier.close();
         }
 
         /**
@@ -822,6 +829,7 @@ public class FileStore extends AbstractF
             try {
                 Stopwatch watch = Stopwatch.createStarted();
                 gcListener.info("TarMK GC #{}: compaction started, gc 
options={}", GC_COUNT, gcOptions);
+                gcListener.updateStatus(COMPACTION.message());
 
                 SegmentNodeState before = getHead();
                 Supplier<Boolean> cancel = new 
CancelCompactionSupplier(FileStore.this);
@@ -851,6 +859,8 @@ public class FileStore extends AbstractF
                     gcListener.info("TarMK GC #{}: compaction detected 
concurrent commits while compacting. " +
                                     "Compacting these commits. Cycle {} of {}",
                             GC_COUNT, cycles, gcOptions.getRetryCount());
+                    gcListener.updateStatus(COMPACTION_RETRY.message() + 
cycles);
+                    
                     SegmentNodeState head = getHead();
                     after = compact(head, writer, cancel);
                     if (after == null) {
@@ -870,6 +880,8 @@ public class FileStore extends AbstractF
                     if (forceTimeout > 0) {
                         gcListener.info("TarMK GC #{}: trying to force compact 
remaining commits for {} seconds",
                                 GC_COUNT, forceTimeout);
+                        
gcListener.updateStatus(COMPACTION_FORCE_COMPACT.message());
+                        
                         cycles++;
                         success = forceCompact(writer, or(cancel, 
timeOut(forceTimeout, SECONDS)));
                         if (!success) {
@@ -1022,6 +1034,7 @@ public class FileStore extends AbstractF
             fileStoreLock.writeLock().lock();
             try {
                 gcListener.info("TarMK GC #{}: cleanup started.", GC_COUNT);
+                gcListener.updateStatus(CLEANUP.message());
 
                 newWriter();
                 segmentCache.clear();

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor.java
 Tue Nov 22 13:59:53 2016
@@ -29,6 +29,7 @@ import java.util.Date;
 
 import javax.annotation.Nonnull;
 
+import org.apache.jackrabbit.oak.segment.compaction.SegmentGCStatus;
 import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
 import org.apache.jackrabbit.oak.stats.Clock;
 
@@ -43,7 +44,8 @@ public class FileStoreGCMonitor implemen
     private long lastRepositorySize;
     private long lastReclaimedSize;
     private String lastError;
-    private String status = "NA";
+    private String lastLogMessage;
+    private String status = SegmentGCStatus.IDLE.message();
 
     public FileStoreGCMonitor(@Nonnull Clock clock) {
         this.clock = checkNotNull(clock);
@@ -53,12 +55,12 @@ public class FileStoreGCMonitor implemen
 
     @Override
     public void info(String message, Object... arguments) {
-        status = arrayFormat(message, arguments).getMessage();
+        lastLogMessage = arrayFormat(message, arguments).getMessage();
     }
 
     @Override
     public void warn(String message, Object... arguments) {
-        status = arrayFormat(message, arguments).getMessage();
+        lastLogMessage = arrayFormat(message, arguments).getMessage();
     }
 
     @Override
@@ -71,7 +73,7 @@ public class FileStoreGCMonitor implemen
 
     @Override
     public void skipped(String reason, Object... arguments) {
-        status = arrayFormat(reason, arguments).getMessage();
+        lastLogMessage = arrayFormat(reason, arguments).getMessage();
     }
 
     @Override
@@ -85,6 +87,11 @@ public class FileStoreGCMonitor implemen
         lastReclaimedSize = reclaimed;
         lastRepositorySize = current;
     }
+    
+    @Override
+    public void updateStatus(String status) {
+        this.status = status;
+    }
 
     public String getLastCompaction() {
         return toString(lastCompaction);
@@ -115,6 +122,11 @@ public class FileStoreGCMonitor implemen
     }
 
     @Nonnull
+    public String getLastLogMessage() {
+        return lastLogMessage;
+    }
+    
+    @Nonnull
     public String getStatus() {
         return status;
     }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
 Tue Nov 22 13:59:53 2016
@@ -720,6 +720,11 @@ public class SegmentCompactionIT {
             cleaned = true;
             delegate.cleaned(reclaimedSize, currentSize);
         }
+        
+        @Override
+        public void updateStatus(String status) {
+            delegate.updateStatus(status);
+        }
 
         public boolean isCleaned() {
             return cleaned;

Modified: 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
 Tue Nov 22 13:59:53 2016
@@ -1609,5 +1609,10 @@ public class FileStore implements Segmen
         public void cleaned(long reclaimedSize, long currentSize) {
             delegatee.cleaned(reclaimedSize, currentSize);
         }
+        
+        @Override
+        public void updateStatus(String status) {
+            delegatee.updateStatus(status);
+        }
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreGCMonitor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreGCMonitor.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreGCMonitor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreGCMonitor.java
 Tue Nov 22 13:59:53 2016
@@ -121,6 +121,11 @@ public class FileStoreGCMonitor extends
         repositorySize.getCounter().set(current);
         reclaimedSize.getCounter().addAndGet(reclaimed);
     }
+    
+    @Override
+    @Deprecated
+    public void updateStatus(String status) {
+    }
 
     //------------------------------------------------------------< 
GCMonitorMBean >---
 

Modified: 
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java?rev=1770841&r1=1770840&r2=1770841&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCompactionIT.java
 Tue Nov 22 13:59:53 2016
@@ -723,6 +723,11 @@ public class SegmentCompactionIT {
             cleaned = true;
             delegate.cleaned(reclaimedSize, currentSize);
         }
+        
+        @Override
+        public void updateStatus(String status) {
+            delegate.updateStatus(status);
+        }
 
         public boolean isCleaned() {
             return cleaned;


Reply via email to