public StripedWriteBehind(ExecutionService executionService, String defaultThreadPool, WriteBehindConfiguration config, CacheLoaderWriter<K, V> cacheLoaderWriter) { int writeBehindConcurrency = config.getConcurrency(); for (int i = 0; i < writeBehindConcurrency; i++) { if (config.getBatchingConfiguration() == null) { this.stripes.add(new NonBatchingLocalHeapWriteBehindQueue<>(executionService, defaultThreadPool, config, cacheLoaderWriter)); } else { this.stripes.add(new BatchingLocalHeapWriteBehindQueue<>(executionService, defaultThreadPool, config, cacheLoaderWriter)); } } }
@Test public void testDefaultUnBatchedConcurrency() { assertThat(newUnBatchedWriteBehindConfiguration().build().getConcurrency(), is(1)); }
@Test public void testDefaultBatchedConcurrency() { assertThat(newBatchedWriteBehindConfiguration(1, TimeUnit.MINUTES, 10).build().getConcurrency(), is(1)); }
CacheLoaderWriterType.WriteBehind writeBehind = new CacheLoaderWriterType.WriteBehind() .withThreadPool(config.getThreadPoolAlias()) .withConcurrency(BigInteger.valueOf(config.getConcurrency())) .withSize(BigInteger.valueOf(config.getMaxQueueSize()));
@Test public void testWriteBehind() throws Exception { final URL resource = XmlConfigurationTest.class.getResource("/configs/writebehind-cache.xml"); XmlConfiguration xmlConfig = new XmlConfiguration(resource); Collection<ServiceConfiguration<?>> serviceConfiguration = xmlConfig.getCacheConfigurations().get("bar").getServiceConfigurations(); assertThat(serviceConfiguration, IsCollectionContaining.hasItem(instanceOf(WriteBehindConfiguration.class))); serviceConfiguration = xmlConfig.newCacheConfigurationBuilderFromTemplate("example", Number.class, String.class).build().getServiceConfigurations(); assertThat(serviceConfiguration, IsCollectionContaining.hasItem(instanceOf(WriteBehindConfiguration.class))); for (ServiceConfiguration<?> configuration : serviceConfiguration) { if(configuration instanceof WriteBehindConfiguration) { BatchingConfiguration batchingConfig = ((WriteBehindConfiguration) configuration).getBatchingConfiguration(); assertThat(batchingConfig.getMaxDelay(), is(10L)); assertThat(batchingConfig.getMaxDelayUnit(), is(SECONDS)); assertThat(batchingConfig.isCoalescing(), is(false)); assertThat(batchingConfig.getBatchSize(), is(2)); assertThat(((WriteBehindConfiguration) configuration).getConcurrency(), is(1)); assertThat(((WriteBehindConfiguration) configuration).getMaxQueueSize(), is(10)); break; } } }
public StripedWriteBehind(ExecutionService executionService, String defaultThreadPool, WriteBehindConfiguration config, CacheLoaderWriter<K, V> cacheLoaderWriter) { int writeBehindConcurrency = config.getConcurrency(); for (int i = 0; i < writeBehindConcurrency; i++) { if (config.getBatchingConfiguration() == null) { this.stripes.add(new NonBatchingLocalHeapWriteBehindQueue<>(executionService, defaultThreadPool, config, cacheLoaderWriter)); } else { this.stripes.add(new BatchingLocalHeapWriteBehindQueue<>(executionService, defaultThreadPool, config, cacheLoaderWriter)); } } }
CacheLoaderWriterType.WriteBehind writeBehind = new CacheLoaderWriterType.WriteBehind() .withThreadPool(config.getThreadPoolAlias()) .withConcurrency(BigInteger.valueOf(config.getConcurrency())) .withSize(BigInteger.valueOf(config.getMaxQueueSize()));