Author: adulceanu
Date: Thu Apr 18 11:45:25 2019
New Revision: 1857739

URL: http://svn.apache.org/viewvc?rev=1857739&view=rev
Log:
OAK-8243 - Expose the number of SNFEs as metric

Modified:
    
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/FileStoreStats.java

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=1857739&r1=1857738&r2=1857739&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
 Thu Apr 18 11:45:25 2019
@@ -80,6 +80,7 @@ public class FileStore extends AbstractF
      */
     private static final String SEGMENT_COUNT = "SEGMENT_COUNT";
 
+
     private static GarbageCollectionStrategy newGarbageCollectionStrategy() {
         if (Boolean.getBoolean("gc.classic")) {
             return new SynchronizedGarbageCollectionStrategy(new 
DefaultGarbageCollectionStrategy());
@@ -502,6 +503,7 @@ public class FileStore extends AbstractF
         } catch (ExecutionException | UncheckedExecutionException e) {
             SegmentNotFoundException snfe = asSegmentNotFoundException(e, id);
             snfeListener.notify(id, snfe);
+            stats.notify(id, snfe);
             throw snfe;
         }
     }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java?rev=1857739&r1=1857738&r2=1857739&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreStats.java
 Thu Apr 18 11:45:25 2019
@@ -25,6 +25,9 @@ import javax.management.openmbean.Compos
 
 import org.apache.jackrabbit.api.stats.TimeSeries;
 import org.apache.jackrabbit.oak.commons.IOUtils;
+import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
+import org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener;
 import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor;
 import org.apache.jackrabbit.oak.stats.CounterStats;
 import org.apache.jackrabbit.oak.stats.MeterStats;
@@ -32,23 +35,26 @@ import org.apache.jackrabbit.oak.stats.S
 import org.apache.jackrabbit.oak.stats.StatsOptions;
 import org.jetbrains.annotations.NotNull;
 
-public class FileStoreStats implements FileStoreStatsMBean, FileStoreMonitor {
+public class FileStoreStats implements FileStoreStatsMBean, FileStoreMonitor, 
SegmentNotFoundExceptionListener {
     public static final String SEGMENT_REPO_SIZE = "SEGMENT_REPO_SIZE";
     public static final String SEGMENT_WRITES = "SEGMENT_WRITES";
     public static final String JOURNAL_WRITES = "JOURNAL_WRITES";
-    
+    private static final String SNFE_COUNT = "SNFE_COUNT";
+
     private final StatisticsProvider statisticsProvider;
     private final FileStore store;
     private final MeterStats writeStats;
     private final CounterStats repoSize;
     private final MeterStats journalWriteStats;
-    
+    private final CounterStats snfeCountStats;
+
     public FileStoreStats(StatisticsProvider statisticsProvider, FileStore 
store, long initialSize) {
         this.statisticsProvider = statisticsProvider;
         this.store = store;
         this.writeStats = statisticsProvider.getMeter(SEGMENT_WRITES, 
StatsOptions.DEFAULT);
         this.repoSize = statisticsProvider.getCounterStats(SEGMENT_REPO_SIZE, 
StatsOptions.DEFAULT);
         this.journalWriteStats = statisticsProvider.getMeter(JOURNAL_WRITES, 
StatsOptions.DEFAULT);
+        this.snfeCountStats = statisticsProvider.getCounterStats(SNFE_COUNT, 
StatsOptions.DEFAULT);
         repoSize.inc(initialSize);
     }
 
@@ -56,6 +62,12 @@ public class FileStoreStats implements F
         repoSize.inc(initialSize);
     }
 
+    //~-----------------------------< SegmentNotFoundExceptionListener >
+    @Override
+    public void notify(@NotNull SegmentId id, @NotNull 
SegmentNotFoundException snfe) {
+        snfeCountStats.inc();
+    }
+
     //~-----------------------------< FileStoreMonitor >
 
     @Override
@@ -68,7 +80,7 @@ public class FileStoreStats implements F
     public void reclaimed(long size) {
         repoSize.dec(size);
     }
-    
+
     @Override
     public void flushed() {
         journalWriteStats.mark();
@@ -110,12 +122,12 @@ public class FileStoreStats implements F
                 IOUtils.humanReadableByteCount(getApproximateSize()),
                 getTarFileCount());
     }
-    
+
     @Override
     public long getJournalWriteStatsAsCount() {
         return journalWriteStats.getCount();
     }
-    
+
     @Override
     public CompositeData getJournalWriteStatsAsCompositeData() {
         return asCompositeData(getTimeSeries(JOURNAL_WRITES), JOURNAL_WRITES);


Reply via email to