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