From e8da151640f07f9524685f48980367d02c377685 Mon Sep 17 00:00:00 2001 From: Nicolas Barithel Date: Mon, 11 Feb 2019 16:26:16 +0100 Subject: [PATCH] ALF-22060: Reader on the backing store is obtained only once in CachingContentStore (#329) --- .../alfresco/repo/content/caching/CachingContentStore.java | 6 +++--- .../repo/content/caching/CachingContentStoreTest.java | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) 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"); }