@Override public String toString() { StringBuilder sb = new StringBuilder(32); sb.append("[maxMemory=").append(getMaxMemory()).append(", maxLatency=") .append(getMaxLatency(TimeUnit.MILLISECONDS)).append(", maxWriteThreads=") .append(getMaxWriteThreads()).append(", timeout=").append(getTimeout(TimeUnit.MILLISECONDS)) .append(", durability=").append(durability).append("]"); return sb.toString(); } }
public TabletServerBatchWriter(ClientContext context, BatchWriterConfig config) { this.context = context; this.maxMem = config.getMaxMemory(); this.maxLatency = config.getMaxLatency(TimeUnit.MILLISECONDS) <= 0 ? Long.MAX_VALUE : config.getMaxLatency(TimeUnit.MILLISECONDS); this.timeout = config.getTimeout(TimeUnit.MILLISECONDS); this.mutations = new MutationSet(); this.lastProcessingStartTime = System.currentTimeMillis(); this.durability = config.getDurability(); this.writer = new MutationWriter(config.getMaxWriteThreads()); if (this.maxLatency != Long.MAX_VALUE) { jtimer.schedule(new TimerTask() { @Override public void run() { try { synchronized (TabletServerBatchWriter.this) { if ((System.currentTimeMillis() - lastProcessingStartTime) > TabletServerBatchWriter.this.maxLatency) startProcessing(); } } catch (Throwable t) { updateUnknownErrors("Max latency task failed " + t.getMessage(), t); } } }, 0, this.maxLatency / 4); } }
@Override public ConnectionOptions<T> batchWriterConfig(BatchWriterConfig batchWriterConfig) { ClientProperty.BATCH_WRITER_MEMORY_MAX.setBytes(properties, batchWriterConfig.getMaxMemory()); ClientProperty.BATCH_WRITER_LATENCY_MAX.setTimeInMillis(properties, batchWriterConfig.getMaxLatency(TimeUnit.MILLISECONDS)); ClientProperty.BATCH_WRITER_TIMEOUT_MAX.setTimeInMillis(properties, batchWriterConfig.getTimeout(TimeUnit.MILLISECONDS)); setProperty(ClientProperty.BATCH_WRITER_THREADS_MAX, batchWriterConfig.getMaxWriteThreads()); setProperty(ClientProperty.BATCH_WRITER_DURABILITY, batchWriterConfig.getDurability().toString()); return this; }
@Override public String toString() { StringBuilder sb = new StringBuilder(32); sb.append("[maxMemory=").append(getMaxMemory()).append(", maxLatency=") .append(getMaxLatency(TimeUnit.MILLISECONDS)).append(", maxWriteThreads=") .append(getMaxWriteThreads()).append(", timeout=").append(getTimeout(TimeUnit.MILLISECONDS)) .append(", durability=").append(durability).append("]"); return sb.toString(); } }
@Test public void testBatchWriterConfigUsesDefaultWithNoParameters() { Map configMap = Maps.newHashMap(); AccumuloGraphConfiguration accumuloGraphConfiguration = new AccumuloGraphConfiguration(configMap); BatchWriterConfig batchWriterConfig = accumuloGraphConfiguration.createBatchWriterConfig(); assertThat(batchWriterConfig.getMaxLatency(TimeUnit.MILLISECONDS), is(AccumuloGraphConfiguration.DEFAULT_BATCHWRITER_MAX_LATENCY)); assertThat(batchWriterConfig.getTimeout(TimeUnit.MILLISECONDS), is(AccumuloGraphConfiguration.DEFAULT_BATCHWRITER_TIMEOUT)); assertThat(batchWriterConfig.getMaxMemory(), is(AccumuloGraphConfiguration.DEFAULT_BATCHWRITER_MAX_MEMORY)); assertThat(batchWriterConfig.getMaxWriteThreads(), is(AccumuloGraphConfiguration.DEFAULT_BATCHWRITER_MAX_WRITE_THREADS)); }
public TabletServerBatchWriter(ClientContext context, BatchWriterConfig config) { this.context = context; this.maxMem = config.getMaxMemory(); this.maxLatency = config.getMaxLatency(TimeUnit.MILLISECONDS) <= 0 ? Long.MAX_VALUE : config.getMaxLatency(TimeUnit.MILLISECONDS); this.timeout = config.getTimeout(TimeUnit.MILLISECONDS); this.mutations = new MutationSet(); this.lastProcessingStartTime = System.currentTimeMillis(); this.durability = config.getDurability(); this.writer = new MutationWriter(config.getMaxWriteThreads()); if (this.maxLatency != Long.MAX_VALUE) { jtimer.schedule(new TimerTask() { @Override public void run() { try { synchronized (TabletServerBatchWriter.this) { if ((System.currentTimeMillis() - lastProcessingStartTime) > TabletServerBatchWriter.this.maxLatency) startProcessing(); } } catch (Throwable t) { updateUnknownErrors("Max latency task failed " + t.getMessage(), t); } } }, 0, this.maxLatency / 4); } }
@Test public void testBatchWriterConfigIsSetToValuesWithParameters() { int numThreads = 2; long timeout = 3; long maxMemory = 5; long maxLatency = 7; Map configMap = Maps.newHashMap(); MapUtils.putAll(configMap, new String[]{ AccumuloGraphConfiguration.BATCHWRITER_MAX_LATENCY, "" + maxLatency, AccumuloGraphConfiguration.BATCHWRITER_MAX_MEMORY, "" + maxMemory, AccumuloGraphConfiguration.BATCHWRITER_MAX_WRITE_THREADS, "" + numThreads, AccumuloGraphConfiguration.BATCHWRITER_TIMEOUT, "" + timeout}); AccumuloGraphConfiguration accumuloGraphConfiguration = new AccumuloGraphConfiguration(configMap); BatchWriterConfig batchWriterConfig = accumuloGraphConfiguration.createBatchWriterConfig(); assertThat(batchWriterConfig.getMaxLatency(TimeUnit.MILLISECONDS), is(maxLatency)); assertThat(batchWriterConfig.getTimeout(TimeUnit.MILLISECONDS), is(timeout)); assertThat(batchWriterConfig.getMaxMemory(), is(maxMemory)); assertThat(batchWriterConfig.getMaxWriteThreads(), is(numThreads)); } }