Author: amitj
Date: Wed Sep 6 10:05:50 2017
New Revision: 1807460
URL: http://svn.apache.org/viewvc?rev=1807460&view=rev
Log:
OAK-6621: Initialize a default sensible stats provider in UploadStagingCache
- Initializing DefaultStatsProvider in case none provided
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java?rev=1807460&r1=1807459&r2=1807460&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java
Wed Sep 6 10:05:50 2017
@@ -53,6 +53,7 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
import org.apache.jackrabbit.oak.stats.CounterStats;
+import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
import org.apache.jackrabbit.oak.stats.MeterStats;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
import org.apache.jackrabbit.oak.stats.StatsOptions;
@@ -141,6 +142,11 @@ public class UploadStagingCache implemen
private FileCache downloadCache;
/**
+ * Scheduled executor for stats in case required
+ */
+ private ScheduledExecutorService statsExecutor;
+
+ /**
* Queue containing items to retry.
*/
private LinkedBlockingQueue<String> retryQueue;
@@ -170,6 +176,10 @@ public class UploadStagingCache implemen
this.retryQueue = new LinkedBlockingQueue<String>();
this.uploadCacheSpace = new File(dir, "upload");
this.uploader = uploader;
+ if (statisticsProvider == null) {
+ statsExecutor = Executors.newSingleThreadScheduledExecutor();
+ statisticsProvider = new DefaultStatisticsProvider(statsExecutor);
+ }
this.cacheStats = new StagingCacheStats(this, statisticsProvider,
size);
this.downloadCache = cache;
@@ -502,6 +512,7 @@ public class UploadStagingCache implemen
LOG.info("Staging cache stats on close [{}]",
cacheStats.cacheInfoAsString());
new ExecutorCloser(executor).close();
new ExecutorCloser(scheduledExecutor).close();
+ new ExecutorCloser(statsExecutor).close();
}
protected void setDownloadCache(@Nullable FileCache downloadCache) {
@@ -591,12 +602,7 @@ class StagingCacheStats extends Annotate
super(DataStoreCacheStatsMBean.class);
this.cache = cache;
- StatisticsProvider statisticsProvider;
- if (provider == null) {
- statisticsProvider = StatisticsProvider.NOOP;
- } else {
- statisticsProvider = provider;
- }
+ StatisticsProvider statisticsProvider = provider;
// Configure cache name
cacheName = "DataStore-StagingCache";
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java?rev=1807460&r1=1807459&r2=1807460&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
Wed Sep 6 10:05:50 2017
@@ -57,6 +57,7 @@ import org.slf4j.LoggerFactory;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -137,6 +138,22 @@ public class UploadStagingCacheTest exte
assertEquals(0, stagingCache.getStats().getMaxTotalWeight());
}
+ @Test
+ public void testDefaultStatsProvider() throws Exception {
+ stagingCache =
+ UploadStagingCache.build(root, null, 1/*threads*/, 8 * 1024 /*
bytes */,
+ uploader, null/*cache*/, null, executor, null, 3000, 6000);
+
+ // add load
+ File f = copyToFile(randomStream(0, 4 * 1024), folder.newFile());
+ Optional<SettableFuture<Integer>> future = stagingCache.put(ID_PREFIX
+ 0, f);
+ assertTrue(future.isPresent());
+
+ assertNotNull(stagingCache.getIfPresent(ID_PREFIX + 0));
+
+ assertCacheStats(stagingCache, 1, 4 * 1024, 1, 1);
+ }
+
/**
* Stage file successful upload.
* @throws Exception