private void addCacheDependencyIfNeeded(String cacheStarting, EmbeddedCacheManager cacheManager, IndexingConfiguration indexingConfiguration) { if (indexingConfiguration.indexedEntities().isEmpty()) { // todo [anistor] remove dependency on QueryKnownClasses in Infinispan 10.0 // indexed classes are autodetected and propagated across cluster via this cache cacheManager.addCacheDependency(cacheStarting, QueryKnownClasses.QUERY_KNOWN_CLASSES_CACHE_NAME); } if (hasInfinispanDirectory(indexingConfiguration.properties())) { String metadataCacheName = getMetadataCacheName(indexingConfiguration.properties()); String lockingCacheName = getLockingCacheName(indexingConfiguration.properties()); String dataCacheName = getDataCacheName(indexingConfiguration.properties()); if (!cacheStarting.equals(metadataCacheName) && !cacheStarting.equals(lockingCacheName) && !cacheStarting.equals(dataCacheName)) { cacheManager.addCacheDependency(cacheStarting, metadataCacheName); cacheManager.addCacheDependency(cacheStarting, lockingCacheName); cacheManager.addCacheDependency(cacheStarting, dataCacheName); } } }
private void addCacheDependencyIfNeeded(String cacheStarting, EmbeddedCacheManager cacheManager, IndexingConfiguration indexingConfiguration) { if (indexingConfiguration.indexedEntities().isEmpty()) { // todo [anistor] remove dependency on QueryKnownClasses in Infinispan 10.0 // indexed classes are autodetected and propagated across cluster via this cache cacheManager.addCacheDependency(cacheStarting, QueryKnownClasses.QUERY_KNOWN_CLASSES_CACHE_NAME); } if (hasInfinispanDirectory(indexingConfiguration.properties())) { String metadataCacheName = getMetadataCacheName(indexingConfiguration.properties()); String lockingCacheName = getLockingCacheName(indexingConfiguration.properties()); String dataCacheName = getDataCacheName(indexingConfiguration.properties()); if (!cacheStarting.equals(metadataCacheName) && !cacheStarting.equals(lockingCacheName) && !cacheStarting.equals(dataCacheName)) { cacheManager.addCacheDependency(cacheStarting, metadataCacheName); cacheManager.addCacheDependency(cacheStarting, lockingCacheName); cacheManager.addCacheDependency(cacheStarting, dataCacheName); } } }
@Test public void testCyclicDependencies() { cacheManager.defineConfiguration("A", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("B", new ConfigurationBuilder().build()); Cache<?, ?> cacheA = cacheManager.getCache("A"); Cache<?, ?> cacheB = cacheManager.getCache("B"); cacheManager.addCacheDependency("A", "B"); cacheManager.addCacheDependency("B", "A"); // Order will not be enforced cacheManager.stop(); assertAllTerminated(cacheA, cacheB); }
@Test public void testStopCacheManager() { CacheEventListener listener = new CacheEventListener(); cacheManager.addListener(listener); cacheManager.defineConfiguration("A", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("B", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("C", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("D", new ConfigurationBuilder().build()); Cache<?, ?> cacheA = cacheManager.getCache("A"); Cache<?, ?> cacheB = cacheManager.getCache("B"); Cache<?, ?> cacheC = cacheManager.getCache("C"); Cache<?, ?> cacheD = cacheManager.getCache("D"); cacheManager.addCacheDependency("A", "B"); cacheManager.addCacheDependency("A", "C"); cacheManager.addCacheDependency("A", "D"); cacheManager.addCacheDependency("B", "C"); cacheManager.addCacheDependency("B", "D"); cacheManager.addCacheDependency("D", "C"); cacheManager.stop(); assertAllTerminated(cacheA, cacheB, cacheC, cacheD); assertEquals(Arrays.asList("A", "B", "D", "C", GlobalConfigurationManager.CONFIG_STATE_CACHE_NAME, DEFAULT_CACHE_NAME), listener.stopOrder); }
@Test public void testRemoveCache() { cacheManager.defineConfiguration("A", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("B", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("C", new ConfigurationBuilder().build()); Cache<?, ?> cacheA = cacheManager.getCache("A"); Cache<?, ?> cacheB = cacheManager.getCache("B"); Cache<?, ?> cacheC = cacheManager.getCache("C"); cacheManager.addCacheDependency("A", "B"); cacheManager.addCacheDependency("A", "C"); cacheManager.addCacheDependency("B", "C"); cacheManager.administration().removeCache("B"); CacheEventListener listener = new CacheEventListener(); cacheManager.addListener(listener); cacheManager.stop(); assertAllTerminated(cacheA, cacheB, cacheC); assertEquals(Arrays.asList("A", "C", GlobalConfigurationManager.CONFIG_STATE_CACHE_NAME, DEFAULT_CACHE_NAME), listener.stopOrder); }
@Test public void testDependencyOnStoppedCaches() { cacheManager.defineConfiguration("A", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("B", new ConfigurationBuilder().build()); Cache<?, ?> cacheA = cacheManager.getCache("A"); Cache<?, ?> cacheB = cacheManager.getCache("B"); cacheA.stop(); cacheManager.addCacheDependency("A", "B"); CacheEventListener listener = new CacheEventListener(); cacheManager.addListener(listener); cacheManager.stop(); assertAllTerminated(cacheA, cacheB); assertEquals(Arrays.asList("B", GlobalConfigurationManager.CONFIG_STATE_CACHE_NAME, DEFAULT_CACHE_NAME), listener.stopOrder); }
@Test public void testExplicitStop() { cacheManager.defineConfiguration("A", new ConfigurationBuilder().build()); cacheManager.defineConfiguration("B", new ConfigurationBuilder().build()); Cache<?, ?> cacheA = cacheManager.getCache("A"); Cache<?, ?> cacheB = cacheManager.getCache("B"); cacheManager.addCacheDependency("A", "B"); cacheB.stop(); cacheA.stop(); assertAllTerminated(cacheA, cacheB); }