Class BatchingExecutor<P extends BatchedWorkProcessor>
java.lang.Object
org.hibernate.search.engine.backend.orchestration.spi.BatchingExecutor<P>
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
ConstructorsConstructorDescriptionBatchingExecutor(String name, P processor, int maxTasksPerBatch, boolean fair, FailureHandler failureHandler) -
Method Summary
Modifier and TypeMethodDescriptionvoidstart(ExecutorService executorService) Start the executor, allowing works to be submitted throughsubmit(BatchedWork).voidstop()Stop the executor, no longer allowing works to be submitted throughsubmit(BatchedWork).voidsubmit(BatchedWork<? super P> work) Submit a work for execution.toString()
-
Constructor Details
-
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- iftruetasks are always submitted to the processor in FIFO order, iffalsetasks 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 Details
-
toString
-
start
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
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
- 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.
-