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