Class BatchingExecutor<P extends BatchedWorkProcessor>
- java.lang.Object
-
- org.hibernate.search.engine.backend.orchestration.spi.BatchingExecutor<P>
-
public final class BatchingExecutor<P extends BatchedWorkProcessor> extends Object
An executor of works that accepts works from multiple threads, puts them in a queue, and processes them in batches in a single background thread.Useful when works can be merged together for optimization purposes (bulking in Elasticsearch), or when they should never be executed in parallel (writes to a Lucene index).
-
-
Constructor Summary
Constructors Constructor Description BatchingExecutor(String name, P processor, int maxTasksPerBatch, boolean fair, FailureHandler failureHandler)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CompletableFuture<?>
completion()
void
start(ExecutorService executorService)
Start the executor, allowing works to be submitted throughsubmit(BatchedWork)
.void
stop()
Stop the executor, no longer allowing works to be submitted throughsubmit(BatchedWork)
.void
submit(BatchedWork<? super P> work)
Submit a work for execution.String
toString()
-
-
-
Constructor Detail
-
BatchingExecutor
public BatchingExecutor(String name, P processor, int maxTasksPerBatch, boolean fair, FailureHandler failureHandler)
- Parameters:
name
- The name of the executor thread (and of this executor when reporting errors)processor
- A task processor. May not be thread-safe.maxTasksPerBatch
- The maximum number of tasks to process in a single batch. Higher values mean more opportunity for the processor to optimize execution, but higher heap consumption.fair
- iftrue
tasks are always submitted to the processor in FIFO order, iffalse
tasks submitted when the internal queue is full may be submitted out of order.failureHandler
- A failure handler to report failures of the background thread.
-
-
Method Detail
-
start
public void start(ExecutorService executorService)
Start the executor, allowing works to be submitted throughsubmit(BatchedWork)
.- Parameters:
executorService
- An executor service with at least one thread.
-
stop
public void stop()
Stop the executor, no longer allowing works to be submitted throughsubmit(BatchedWork)
.This will remove pending works from the queue.
-
submit
public void submit(BatchedWork<? super P> work) throws InterruptedException
Submit a work for execution.Must not be called when the executor is stopped.
- Parameters:
work
- A work to execute.- Throws:
InterruptedException
- If the current thread is interrupted while enqueuing the work.
-
completion
public CompletableFuture<?> completion()
- Returns:
- A future that completes when all works submitted to the executor so far are completely executed. Works submitted to the executor after entering this method may delay the wait.
-
-