public NonBatchingLocalHeapWriteBehindQueue(ExecutionService executionService, String defaultThreadPool, WriteBehindConfiguration config, CacheLoaderWriter<K, V> cacheLoaderWriter) { super(cacheLoaderWriter); this.cacheLoaderWriter = cacheLoaderWriter; this.executorQueue = new LinkedBlockingQueue<>(config.getMaxQueueSize()); if (config.getThreadPoolAlias() == null) { this.executor = executionService.getOrderedExecutor(defaultThreadPool, executorQueue); } else { this.executor = executionService.getOrderedExecutor(config.getThreadPoolAlias(), executorQueue); } }
@Test public void testDefaultUnBatchedQueueSize() { assertThat(newUnBatchedWriteBehindConfiguration().build().getMaxQueueSize(), is(Integer.MAX_VALUE)); }
@Test public void testDefaultBatchedQueueSize() { assertThat(newBatchedWriteBehindConfiguration(1, TimeUnit.MINUTES, 10).build().getMaxQueueSize(), is(Integer.MAX_VALUE)); }
public BatchingLocalHeapWriteBehindQueue(ExecutionService executionService, String defaultThreadPool, WriteBehindConfiguration config, CacheLoaderWriter<K, V> cacheLoaderWriter) { super(cacheLoaderWriter); this.cacheLoaderWriter = cacheLoaderWriter; BatchingConfiguration batchingConfig = config.getBatchingConfiguration(); this.maxWriteDelayMs = batchingConfig.getMaxDelayUnit().toMillis(batchingConfig.getMaxDelay()); this.batchSize = batchingConfig.getBatchSize(); this.coalescing = batchingConfig.isCoalescing(); this.executorQueue = new LinkedBlockingQueue<>(config.getMaxQueueSize() / batchSize); if (config.getThreadPoolAlias() == null) { this.executor = executionService.getOrderedExecutor(defaultThreadPool, executorQueue); } else { this.executor = executionService.getOrderedExecutor(config.getThreadPoolAlias(), executorQueue); } if (config.getThreadPoolAlias() == null) { this.scheduledExecutor = executionService.getScheduledExecutor(defaultThreadPool); } else { this.scheduledExecutor = executionService.getScheduledExecutor(config.getThreadPoolAlias()); } }
.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 NonBatchingLocalHeapWriteBehindQueue(ExecutionService executionService, String defaultThreadPool, WriteBehindConfiguration config, CacheLoaderWriter<K, V> cacheLoaderWriter) { super(cacheLoaderWriter); this.cacheLoaderWriter = cacheLoaderWriter; this.executorQueue = new LinkedBlockingQueue<>(config.getMaxQueueSize()); if (config.getThreadPoolAlias() == null) { this.executor = executionService.getOrderedExecutor(defaultThreadPool, executorQueue); } else { this.executor = executionService.getOrderedExecutor(config.getThreadPoolAlias(), executorQueue); } }
public BatchingLocalHeapWriteBehindQueue(ExecutionService executionService, String defaultThreadPool, WriteBehindConfiguration config, CacheLoaderWriter<K, V> cacheLoaderWriter) { super(cacheLoaderWriter); this.cacheLoaderWriter = cacheLoaderWriter; BatchingConfiguration batchingConfig = config.getBatchingConfiguration(); this.maxWriteDelayMs = batchingConfig.getMaxDelayUnit().toMillis(batchingConfig.getMaxDelay()); this.batchSize = batchingConfig.getBatchSize(); this.coalescing = batchingConfig.isCoalescing(); this.executorQueue = new LinkedBlockingQueue<>(config.getMaxQueueSize() / batchSize); if (config.getThreadPoolAlias() == null) { this.executor = executionService.getOrderedExecutor(defaultThreadPool, executorQueue); } else { this.executor = executionService.getOrderedExecutor(config.getThreadPoolAlias(), executorQueue); } if (config.getThreadPoolAlias() == null) { this.scheduledExecutor = executionService.getScheduledExecutor(defaultThreadPool); } else { this.scheduledExecutor = executionService.getScheduledExecutor(config.getThreadPoolAlias()); } }
.withThreadPool(config.getThreadPoolAlias()) .withConcurrency(BigInteger.valueOf(config.getConcurrency())) .withSize(BigInteger.valueOf(config.getMaxQueueSize()));