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


Reply via email to