@Override public Collection<CapabilityServiceConfigurator> getDeploymentServiceConfigurators(final ServiceName name) { String cacheName = getCacheName(name, this.name); String containerName = this.config.getContainerName(); String templateCacheName = this.config.getCacheName(); // Ensure eviction and expiration are disabled @SuppressWarnings("deprecation") Consumer<ConfigurationBuilder> configurator = builder -> { // Ensure expiration is not enabled on cache ExpirationConfiguration expiration = builder.expiration().create(); if ((expiration.lifespan() >= 0) || (expiration.maxIdle() >= 0)) { builder.expiration().lifespan(-1).maxIdle(-1); InfinispanEjbLogger.ROOT_LOGGER.expirationDisabled(InfinispanCacheRequirement.CONFIGURATION.resolve(containerName, templateCacheName)); } int size = this.config.getMaxSize(); EvictionStrategy strategy = (size > 0) ? EvictionStrategy.REMOVE : EvictionStrategy.MANUAL; builder.memory().evictionStrategy(strategy).evictionType(EvictionType.COUNT).storageType(StorageType.OBJECT).size(size); if (strategy.isEnabled()) { // Only evict bean group entries // We will cascade eviction to the associated beans builder.dataContainer().dataContainer(EvictableDataContainer.createDataContainer(builder, size, BeanGroupKey.class::isInstance)); } }; List<CapabilityServiceConfigurator> builders = new ArrayList<>(3); builders.add(new TemplateConfigurationServiceConfigurator(ServiceName.parse(InfinispanCacheRequirement.CONFIGURATION.resolve(containerName, cacheName)), containerName, cacheName, templateCacheName, configurator)); builders.add(new CacheServiceConfigurator<>(ServiceName.parse(InfinispanCacheRequirement.CACHE.resolve(containerName, cacheName)), containerName, cacheName).require(new ServiceDependency(name.append("marshalling")))); builders.add(new ServiceConfiguratorAdapter(new RemoveOnCancelScheduledExecutorServiceConfigurator(name.append(this.name, "expiration"), EXPIRATION_THREAD_FACTORY))); return builders; }
builder.dataContainer().dataContainer(EvictableDataContainer.createDataContainer(builder, size, SessionCreationMetaDataKey.class::isInstance));
@SuppressWarnings("deprecation") @Override public void accept(ConfigurationBuilder builder) { ClusteringConfigurationBuilder clustering = builder.clustering(); CacheMode mode = clustering.cacheMode(); clustering.cacheMode(mode.needsStateTransfer() ? CacheMode.REPL_SYNC : CacheMode.LOCAL); // don't use DefaultConsistentHashFactory for REPL caches (WFLY-9276) clustering.hash().consistentHashFactory(null); clustering.l1().disable(); // Workaround for ISPN-8722 AttributeSet attributes = TemplateConfigurationServiceConfigurator.getAttributes(clustering); attributes.attribute(ClusteringConfiguration.BIAS_ACQUISITION).reset(); attributes.attribute(ClusteringConfiguration.BIAS_LIFESPAN).reset(); attributes.attribute(ClusteringConfiguration.INVALIDATION_BATCH_SIZE).reset(); // Ensure we use the default data container builder.dataContainer().dataContainer(null); // Disable expiration builder.expiration().lifespan(-1).maxIdle(-1); // Disable eviction builder.memory().size(-1).evictionStrategy(EvictionStrategy.MANUAL); builder.persistence().clearStores(); StateTransferConfigurationBuilder stateTransfer = clustering.stateTransfer().fetchInMemoryState(mode.needsStateTransfer()); attributes = TemplateConfigurationServiceConfigurator.getAttributes(stateTransfer); attributes.attribute(StateTransferConfiguration.AWAIT_INITIAL_TRANSFER).reset(); attributes.attribute(StateTransferConfiguration.TIMEOUT).reset(); } }
@SuppressWarnings("deprecation") @Override public void accept(ConfigurationBuilder builder) { ClusteringConfigurationBuilder clustering = builder.clustering(); CacheMode mode = clustering.cacheMode(); clustering.cacheMode(mode.needsStateTransfer() ? CacheMode.REPL_SYNC : CacheMode.LOCAL); // don't use DefaultConsistentHashFactory for REPL caches (WFLY-9276) clustering.hash().consistentHashFactory(null); clustering.l1().disable(); // Workaround for ISPN-8722 AttributeSet attributes = TemplateConfigurationServiceConfigurator.getAttributes(clustering); attributes.attribute(ClusteringConfiguration.BIAS_ACQUISITION).reset(); attributes.attribute(ClusteringConfiguration.BIAS_LIFESPAN).reset(); attributes.attribute(ClusteringConfiguration.INVALIDATION_BATCH_SIZE).reset(); // Ensure we use the default data container builder.dataContainer().dataContainer(null); // Disable expiration builder.expiration().lifespan(-1).maxIdle(-1); // Disable eviction builder.memory().size(-1).evictionStrategy(EvictionStrategy.MANUAL); builder.persistence().clearStores(); StateTransferConfigurationBuilder stateTransfer = clustering.stateTransfer().fetchInMemoryState(mode.needsStateTransfer()); attributes = TemplateConfigurationServiceConfigurator.getAttributes(stateTransfer); attributes.attribute(StateTransferConfiguration.AWAIT_INITIAL_TRANSFER).reset(); attributes.attribute(StateTransferConfiguration.TIMEOUT).reset(); } }
void equivalate() { builder.dataContainer().keyEquivalence(EQUIVALENCE); }
ConfigurationBuilder builder = new ConfigurationBuilder(); builder.dataContainer() .keyEquivalence(new AnyServerEquivalence()) .valueEquivalence(new AnyServerEquivalence()); cacheManager.defineConfiguration("cache", builder.build());
@Override protected void configure(ConfigurationBuilder builder) { // We use a mocked container, so nothing is written DataContainer mockContainer = mock(DataContainer.class); when(mockContainer.iterator()).thenReturn(Collections.emptyIterator()); when(mockContainer.iteratorIncludingExpired()).thenReturn(Collections.emptyIterator()); when(mockContainer.spliterator()).thenReturn(Spliterators.emptySpliterator()); when(mockContainer.entrySet()).thenReturn(Collections.emptySet()); when(mockContainer.keySet()).thenReturn(Collections.emptySet()); when(mockContainer.values()).thenReturn(Collections.emptyList()); InternalEntryFactory factory = new InternalEntryFactoryImpl(); when(mockContainer.compute(any(), any())).then(invocation -> { Object key = invocation.getArgument(0); ComputeAction action = invocation.getArgument(1); return action.compute(key, null, factory); }); builder .dataContainer() .dataContainer(mockContainer) .persistence() .addStore(DummyInMemoryStoreConfigurationBuilder.class) .storeName(getClass().getName()) .purgeOnStartup(true) ; }
@Override protected void createCacheManagers() throws Throwable { ConfigurationBuilder replSync = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false); replSync.dataContainer().memory().storageType(StorageType.BINARY); createClusteredCaches(2, "replSync", replSync); }
switch (attribute) { case CLASS: builder.dataContainer().dataContainer(Util.<DataContainer>getInstance(value, holder.getClassLoader())); break; case KEY_EQUIVALENCE: builder.dataContainer().keyEquivalence(Util.<Equivalence>getInstance(value, holder.getClassLoader())); break; case VALUE_EQUIVALENCE: builder.dataContainer().valueEquivalence(Util.<Equivalence>getInstance(value, holder.getClassLoader())); break; default: switch (element) { case PROPERTIES: builder.dataContainer().withProperties(parseProperties(reader)); break; default:
@Test public void testCustomDataContainer() { ConfigurationBuilder configuration = new ConfigurationBuilder(); configuration.dataContainer().dataContainer(new QueryableDataContainer()); EmbeddedCacheManager cm = TestCacheManagerFactory.createCacheManager(configuration); try { AdvancedCache<Object, Object> cache = cm.getCache().getAdvancedCache(); DataContainer ddc = DefaultDataContainer.unBoundedDataContainer(cache.getCacheConfiguration().locking().concurrencyLevel()); ActivationManager activationManager = mock(ActivationManager.class); doNothing().when(activationManager).onUpdate(Mockito.any(), Mockito.anyBoolean()); TestingUtil.inject(ddc, new InternalEntryFactoryImpl(), activationManager, TIME_SERVICE, mock(InternalExpirationManager.class)); QueryableDataContainer.setDelegate(ddc); // Verify that the config is correct Assert.assertEquals(cm.getDefaultCacheConfiguration().dataContainer().dataContainer().getClass(), QueryableDataContainer.class); DataContainer container = cache.getDataContainer(); Assert.assertEquals(container.getClass(), InternalDataContainerAdapter.class); DataContainer delegate = ((InternalDataContainerAdapter) container).delegate(); Assert.assertEquals(delegate.getClass(), QueryableDataContainer.class); QueryableDataContainer dataContainer = QueryableDataContainer.class.cast(delegate); cache.put("name", "Pete"); Assert.assertTrue(checkLoggedOperations(dataContainer.getLoggedOperations(), "put(name, Pete", "compute(name,")); } finally { TestingUtil.killCacheManagers(cm); } }
@Override public Collection<CapabilityServiceConfigurator> getDeploymentServiceConfigurators(final ServiceName name) { String cacheName = getCacheName(name); String containerName = this.config.getContainerName(); String templateCacheName = this.config.getCacheName(); // Ensure eviction and expiration are disabled @SuppressWarnings("deprecation") Consumer<ConfigurationBuilder> configurator = builder -> { // Ensure expiration is not enabled on cache ExpirationConfiguration expiration = builder.expiration().create(); if ((expiration.lifespan() >= 0) || (expiration.maxIdle() >= 0)) { builder.expiration().lifespan(-1).maxIdle(-1); InfinispanEjbLogger.ROOT_LOGGER.expirationDisabled(InfinispanCacheRequirement.CONFIGURATION.resolve(containerName, templateCacheName)); } int size = this.config.getMaxSize(); EvictionStrategy strategy = (size > 0) ? EvictionStrategy.REMOVE : EvictionStrategy.MANUAL; builder.memory().evictionStrategy(strategy).evictionType(EvictionType.COUNT).storageType(StorageType.OBJECT).size(size); if (strategy.isEnabled()) { // Only evict bean group entries // We will cascade eviction to the associated beans builder.dataContainer().dataContainer(EvictableDataContainer.createDataContainer(builder, size, BeanGroupKey.class::isInstance)); } }; List<CapabilityServiceConfigurator> builders = new ArrayList<>(4); builders.add(new TemplateConfigurationServiceConfigurator(ServiceName.parse(InfinispanCacheRequirement.CONFIGURATION.resolve(containerName, cacheName)), containerName, cacheName, templateCacheName, configurator)); builders.add(new CacheServiceConfigurator<>(ServiceName.parse(InfinispanCacheRequirement.CACHE.resolve(containerName, cacheName)), containerName, cacheName).require(new ServiceDependency(name.append("marshalling")))); builders.add(new ServiceConfiguratorAdapter(new RemoveOnCancelScheduledExecutorServiceConfigurator(name.append(this.name, "expiration"), EXPIRATION_THREAD_FACTORY))); return builders; }
@Test public void testInternalDataContainer() { DefaultSegmentedDataContainer container = new DefaultSegmentedDataContainer((Supplier<ConcurrentMap>) ConcurrentHashMap::new, 1); ConfigurationBuilder configuration = new ConfigurationBuilder(); configuration.dataContainer().dataContainer(container); EmbeddedCacheManager cm = TestCacheManagerFactory.createCacheManager(configuration); try { AdvancedCache<Object, Object> cache = cm.getCache().getAdvancedCache(); assertEquals(container, cache.getDataContainer()); } finally { TestingUtil.killCacheManagers(cm); } }
/** * Run this on a separate cache as it creates and stops stores, which might affect other tests. */ public void testStores() { ConfigurationBuilder cacheCofig = getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false); cacheCofig.dataContainer().memory().storageType(StorageType.BINARY); DummyInMemoryStoreConfigurationBuilder dimcs = new DummyInMemoryStoreConfigurationBuilder(cacheCofig.persistence()); dimcs.storeName(getClass().getSimpleName()); cacheCofig.persistence().addStore(dimcs); defineConfigurationOnAllManagers("replSync2", cacheCofig); waitForClusterToForm("replSync2"); Cache<Object, Object> cache1 = cache(0, "replSync2"); Cache<Object, Object> cache2 = cache(1, "replSync2"); Pojo pojo = new Pojo(); cache1.put("key", pojo); assertEquals(pojo, cache2.get("key")); }
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.read(pendingPutsConfiguration); configurationBuilder.dataContainer().keyEquivalence(cacheConfiguration.dataContainer().keyEquivalence()); cacheManager.defineConfiguration(pendingPutsName, configurationBuilder.build());
@SuppressWarnings("deprecation") @Override public void accept(ConfigurationBuilder builder) { ClusteringConfigurationBuilder clustering = builder.clustering(); CacheMode mode = clustering.cacheMode(); clustering.cacheMode(mode.needsStateTransfer() ? CacheMode.REPL_SYNC : CacheMode.LOCAL); // don't use DefaultConsistentHashFactory for REPL caches (WFLY-9276) clustering.hash().consistentHashFactory(null); clustering.l1().disable(); // Workaround for ISPN-8722 AttributeSet attributes = TemplateConfigurationServiceConfigurator.getAttributes(clustering); attributes.attribute(ClusteringConfiguration.BIAS_ACQUISITION).reset(); attributes.attribute(ClusteringConfiguration.BIAS_LIFESPAN).reset(); attributes.attribute(ClusteringConfiguration.INVALIDATION_BATCH_SIZE).reset(); // Ensure we use the default data container builder.dataContainer().dataContainer(null); // Disable expiration builder.expiration().lifespan(-1).maxIdle(-1); // Disable eviction builder.memory().size(-1).evictionStrategy(EvictionStrategy.MANUAL); builder.persistence().clearStores(); StateTransferConfigurationBuilder stateTransfer = clustering.stateTransfer().fetchInMemoryState(mode.needsStateTransfer()); attributes = TemplateConfigurationServiceConfigurator.getAttributes(stateTransfer); attributes.attribute(StateTransferConfiguration.AWAIT_INITIAL_TRANSFER).reset(); attributes.attribute(StateTransferConfiguration.TIMEOUT).reset(); } }