Author: amitj
Date: Fri Jul 20 06:23:56 2018
New Revision: 1836320

URL: http://svn.apache.org/viewvc?rev=1836320&view=rev
Log:
OAK-7646: UploadStagingCacheTest#testConcurrentSameAddRequest fails 
intermittently

- Changed MeterStats#mark() to MeterStats#mark(1) which curiously fixes the 
issue.
- Added a slight delay in starting the 2nd thread

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=1836320&r1=1836319&r2=1836320&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
 Fri Jul 20 06:23:56 2018
@@ -652,19 +652,19 @@ class StagingCacheStats extends Annotate
     //~--------------------------------------< stats update methods
 
     void markHit() {
-        hitMeter.mark();
+        hitMeter.mark(1);
     }
 
     void markRequest() {
-        requestMeter.mark();
+        requestMeter.mark(1);
     }
 
     void markLoadSuccess() {
-        loadSuccessMeter.mark();
+        loadSuccessMeter.mark(1);
     }
 
     void markLoad() {
-        loadMeter.mark();
+        loadMeter.mark(1);
     }
 
     TimerStats.Context startUpLoaderTimer() {
@@ -672,7 +672,7 @@ class StagingCacheStats extends Annotate
     }
 
     void incrementCount() {
-        countMeter.inc();
+        countMeter.inc(1);
     }
 
     void incrementSize(long size) {
@@ -684,7 +684,7 @@ class StagingCacheStats extends Annotate
     }
 
     void decrementCount() {
-        countMeter.dec();
+        countMeter.dec(1);
     }
 
     void decrementSize(long size) {

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=1836320&r1=1836319&r2=1836320&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
 Fri Jul 20 06:23:56 2018
@@ -431,16 +431,19 @@ public class UploadStagingCacheTest exte
         LOG.info("Starting testConcurrentSameAddRequest");
 
         closer.close();
+        ListeningExecutorService executorService =
+            MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(2));
 
         List<ListenableFuture<Integer>> futures = Lists.newArrayList();
         CountDownLatch moveLatch = new CountDownLatch(1);
         init(1, new TestStagingUploader(folder.newFolder(), moveLatch), null);
 
         //1st request
-        ListenableFuture<Boolean> resultReq1 = putThread(folder, futures);
+        ListenableFuture<Boolean> resultReq1 = putThread(folder, 
executorService, futures);
+        Thread.sleep(100);
 
         //2nd Request
-        ListenableFuture<Boolean> resultReq2 = putThread(folder, futures);
+        ListenableFuture<Boolean> resultReq2 = putThread(folder, 
executorService, futures);
         Thread.sleep(200);
 
         // Allow any thread to start moving
@@ -784,9 +787,7 @@ public class UploadStagingCacheTest exte
     }
 
 
-    private ListenableFuture<Boolean> putThread(TemporaryFolder folder, 
List<ListenableFuture<Integer>> futures) {
-        ListeningExecutorService executorService =
-            MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
+    private ListenableFuture<Boolean> putThread(TemporaryFolder folder, 
ListeningExecutorService executorService, List<ListenableFuture<Integer>> 
futures) {
         closer.register(new ExecutorCloser(executorService));
 
         ListenableFuture<Boolean> result = executorService.submit(new 
Callable<Boolean>() {


Reply via email to