@Override public void init(ComputationContext context) { super.init(context); // note that we don't use setFlushInterval because this is done by our timer continueOnFailure = context.getPolicy().continueOnFailure(); long backoffDelayMs = context.getPolicy().getRetryPolicy().getDelay().toMillis(); int retries = context.getPolicy().getRetryPolicy().getMaxRetries(); bulkProcessor = getESClient().bulkProcessorBuilder(this) .setConcurrentRequests(0) .setBulkSize(new ByteSizeValue(esBulkSize, ByteSizeUnit.BYTES)) .setBulkActions(esBulkActions) .setBackoffPolicy(BackoffPolicy.exponentialBackoff( TimeValue.timeValueMillis(backoffDelayMs), retries)) .build(); codec = BulkCodecs.getDataBucketCodec(); context.setTimer("flush", System.currentTimeMillis() + flushIntervalMs); }