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 2017/03/03 08:13:58 UTC
svn commit: r1785227 - in /jackrabbit/oak/trunk/oak-core/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 Mar 3 08:13:58 2017
New Revision: 1785227
URL: http://svn.apache.org/viewvc?rev=1785227&view=rev
Log:
OAK-5874: Duplicate uploads might happen with AbstractSharedCachingDataStore
- Slightly modified patch from Raul Hudea
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java?rev=1785227&r1=1785226&r2=1785227&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java Fri Mar 3 08:13:58 2017
@@ -255,7 +255,9 @@ public class UploadStagingCache implemen
*
* @param id the id of the file to be staged
* @param input the file to be staged
- * @return An Optional SettableFuture.
+ * @return An Optional SettableFuture containing
+ * 1 if upload was successful,
+ * 0 if an existing id is already pending for upload
*/
public Optional<SettableFuture<Integer>> put(String id, File input) {
return putOptionalDisregardingSize(id, input, false);
@@ -305,6 +307,13 @@ public class UploadStagingCache implemen
}
} else {
currentSize.addAndGet(-length);
+
+ // if file is still pending upload, count it as present
+ if (map.containsKey(id) || attic.containsKey(id)) {
+ SettableFuture<Integer> result = SettableFuture.create();
+ result.set(0);
+ return Optional.of(result);
+ }
}
return Optional.absent();
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java?rev=1785227&r1=1785226&r2=1785227&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCacheTest.java Fri Mar 3 08:13:58 2017
@@ -381,7 +381,8 @@ public class UploadStagingCacheTest exte
File f = copyToFile(randomStream(0, 4 * 1024), folder.newFile());
Optional<SettableFuture<Integer>> future2 = stagingCache.put(ID_PREFIX + 0, f);
- assertFalse(future2.isPresent());
+ assertTrue(future2.isPresent());
+ assertEquals(future2.get().get().intValue(), 0);
//start
taskLatch.countDown();