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/16 08:53:39 UTC
svn commit: r1787145 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java
Author: amitj
Date: Thu Mar 16 08:53:39 2017
New Revision: 1787145
URL: http://svn.apache.org/viewvc?rev=1787145&view=rev
Log:
OAK-5934: AbstractSharedCachingDataStore initializes a loader which closes input stream retrieved prematurely
- Removed the finally clause and the input stream close
- Added test syncAddGetLoadCache
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java?rev=1787145&r1=1787144&r2=1787145&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java Thu Mar 16 08:53:39 2017
@@ -163,15 +163,7 @@ public abstract class AbstractSharedCach
uploadThreads,
new CacheLoader<String, InputStream>() {
@Override public InputStream load(String key) throws Exception {
- InputStream is = null;
- boolean threw = true;
- try {
- is = backend.read(new DataIdentifier(key));
- threw = false;
- } finally {
- Closeables.close(is, threw);
- }
- return is;
+ return backend.read(new DataIdentifier(key));
}
}, new StagingUploader() {
@Override public void write(String id, File file) throws DataStoreException {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java?rev=1787145&r1=1787144&r2=1787145&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java Thu Mar 16 08:53:39 2017
@@ -226,6 +226,35 @@ public class CachingDataStoreTest extend
}
/**
+ * Add, get forcing load in cache.
+ * @throws Exception
+ */
+ @Test
+ public void syncAddGetLoadCache() throws Exception {
+ LOG.info("Starting syncAddGetForceFromCache");
+
+ File f = copyToFile(randomStream(0, 4 * 1024), folder.newFile());
+ String id = getIdForInputStream(f);
+ FileInputStream fin = new FileInputStream(f);
+ closer.register(fin);
+
+ DataRecord rec = dataStore.addRecord(fin, new BlobOptions().setUpload(SYNCHRONOUS));
+ assertEquals(id, rec.getIdentifier().toString());
+ assertFile(rec.getStream(), f, folder);
+
+ // Invalidate from the local cache
+ dataStore.getCache().invalidate(id);
+
+ // Trigger load from backend
+ File cacheDownloaded = dataStore.getCache().get(id);
+ assertTrue(Files.equal(f, cacheDownloaded));
+
+ assertEquals(1, Iterators.size(dataStore.getAllIdentifiers()));
+
+ LOG.info("Finished syncAddGetLoadCache");
+ }
+
+ /**
* {@link CompositeDataStoreCache#getIfPresent(String)} when no cache.
*/
@Test