diff --git a/src/main/java/org/alfresco/repo/content/caching/CachingContentStore.java b/src/main/java/org/alfresco/repo/content/caching/CachingContentStore.java index b3d344f008..e29dae1621 100644 --- a/src/main/java/org/alfresco/repo/content/caching/CachingContentStore.java +++ b/src/main/java/org/alfresco/repo/content/caching/CachingContentStore.java @@ -206,7 +206,7 @@ public class CachingContentStore implements ContentStore, ApplicationEventPublis return backingStoreReader; } - ContentReader reader = attemptCacheAndRead(url); + ContentReader reader = attemptCacheAndRead(url, backingStoreReader); if (reader != null) { @@ -254,14 +254,14 @@ public class CachingContentStore implements ContentStore, ApplicationEventPublis * @param url URL to cache. * @return A reader onto the cached content file or null if unable to provide one. */ - private ContentReader attemptCacheAndRead(String url) + private ContentReader attemptCacheAndRead(String url, ContentReader backingStoreReader) { ContentReader reader = null; try { if (!cache.contains(url)) { - if (cache.put(url, backingStore.getReader(url))) + if (cache.put(url, backingStoreReader)) { reader = cache.getReader(url); } diff --git a/src/test/java/org/alfresco/repo/content/caching/CachingContentStoreTest.java b/src/test/java/org/alfresco/repo/content/caching/CachingContentStoreTest.java index eac0d1b9ea..1fdc68e235 100644 --- a/src/test/java/org/alfresco/repo/content/caching/CachingContentStoreTest.java +++ b/src/test/java/org/alfresco/repo/content/caching/CachingContentStoreTest.java @@ -38,6 +38,7 @@ import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.only; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -121,6 +122,8 @@ public class CachingContentStoreTest assertSame(returnedReader, cachedContent); verify(quota).afterWritingCacheFile(1274L); + // Check backing store reader is only acquired once + verify(backingStore, only()).getReader("url"); }