You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by am...@apache.org on 2018/07/20 06:23:57 UTC

svn commit: r1836320 - in /jackrabbit/oak/trunk/oak-blob-plugins/src: main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java

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>() {