This is an automated email from the ASF dual-hosted git repository. tv pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-jcs.git
commit 1477f3f503ea2b2471683c3067916a4484539606 Author: Thomas Vandahl <[email protected]> AuthorDate: Mon Apr 13 14:50:48 2020 +0200 JCS-199 Properly shut down auxiliaries --- .../jcs/engine/control/CompositeCacheManager.java | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheManager.java b/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheManager.java index 85712ff..b13b66d 100644 --- a/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheManager.java +++ b/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCacheManager.java @@ -631,6 +631,19 @@ public class CompositeCacheManager // do the traditional shutdown of the regions. getCacheNames().forEach(this::freeCache); + // shut down auxiliaries + for (String key : auxiliaryCaches.keySet()) + { + try + { + freeAuxiliaryCache(key); + } + catch (IOException e) + { + log.warn("Auxiliary cache {0} failed to shut down", key, e); + } + } + // shut down factories auxiliaryFactoryRegistry.values().forEach(AuxiliaryCacheFactory::dispose); @@ -779,6 +792,35 @@ public class CompositeCacheManager } /** + * Dispose a cache and remove it from the map of registered auxiliary caches + * + * @param auxName the auxiliary name + * @param cacheName the region name + * @throws IOException if disposing of the cache fails + */ + public void freeAuxiliaryCache(String auxName, String cacheName) throws IOException + { + String key = String.format("aux.%s.region.%s", auxName, cacheName); + freeAuxiliaryCache(key); + } + + /** + * Dispose a cache and remove it from the map of registered auxiliary caches + * + * @param key the key into the map of auxiliaries + * @throws IOException if disposing of the cache fails + */ + public void freeAuxiliaryCache(String key) throws IOException + { + AuxiliaryCache<?, ?> aux = auxiliaryCaches.remove( key ); + + if ( aux != null ) + { + aux.dispose(); + } + } + + /** * Gets stats for debugging. This calls gets statistics and then puts all the results in a * string. This returns data for all regions. * <p>
