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);