Şu satırı dahil ederiz
import com.hazelcast.spiimpl.operationexecutor.impl.OperationThread;
Kalıtım şöyle
Thread
HazelcastManagedThread
OperationThread
GenericOperationThread
PartitionOperationThread
process metodu
Metod şöyle. TaskBatch belirtilen partition'lar üzerinde bir şey çalıştırır.
private void process(TaskBatch batch) {
Object task = batch.next();
if (task == null) {
completedOperationBatchCount.inc();
return;
}
try {
if (task instanceof Operation) {
if (process((Operation) task)) {
queue.add(task, false);
}
} else if (task instanceof Runnable) {
process((Runnable) task);
} else {
throw new IllegalStateException("Unhandled task: " + task + " from "
+ batch.taskFactory());
}
} finally {
queue.add(batch, false);
}
}TaskBatch nereden gelir? Bir örnek şöyle. Burada AbstractAsyncMessageTask aslında com.hazelcast.client.impl.protocol.task.map.MapClearMessageTask<init>:37, TaskBatch (com.hazelcast.spi.impl.operationexecutor.impl) executeOnPartitions:365, OperationExecutorImpl (com.hazelcast.spi.impl.operationexecutor.impl) executeOnPartitions:286, OperationServiceImpl (com.hazelcast.spi.impl.operationservice.impl) executeOperations:178, PartitionIteratingOperation$OffloadImpl (com.hazelcast.spi.impl.operationservice.impl.operations) start:150, PartitionIteratingOperation$OffloadImpl (com.hazelcast.spi.impl.operationservice.impl.operations) call:307, OperationRunnerImpl (com.hazelcast.spi.impl.operationservice.impl) run:258, OperationRunnerImpl (com.hazelcast.spi.impl.operationservice.impl) run:219, OperationRunnerImpl (com.hazelcast.spi.impl.operationservice.impl) run:411, OperationExecutorImpl (com.hazelcast.spi.impl.operationexecutor.impl) runOrExecute:438, OperationExecutorImpl (com.hazelcast.spi.impl.operationexecutor.impl) doInvokeLocal:601, Invocation (com.hazelcast.spi.impl.operationservice.impl) doInvoke:580, Invocation (com.hazelcast.spi.impl.operationservice.impl) invoke0:541, Invocation (com.hazelcast.spi.impl.operationservice.impl) invoke:241, Invocation (com.hazelcast.spi.impl.operationservice.impl) invoke:61, InvocationBuilderImpl (com.hazelcast.spi.impl.operationservice.impl) invokeOnAllPartitions:120, InvokeOnPartitions (com.hazelcast.spi.impl.operationservice.impl) invokeAsync:98, InvokeOnPartitions (com.hazelcast.spi.impl.operationservice.impl) invokeOnAllPartitionsAsync:420, OperationServiceImpl (com.hazelcast.spi.impl.operationservice.impl) processInternal:40, AbstractAllPartitionsMessageTask (com.hazelcast.client.impl.protocol.task) processMessage:71, AbstractAsyncMessageTask (com.hazelcast.client.impl.protocol.task) initializeAndProcessMessage:153, AbstractMessageTask (com.hazelcast.client.impl.protocol.task) run:116, AbstractMessageTask (com.hazelcast.client.impl.protocol.task) runWorker:1149, ThreadPoolExecutor (java.util.concurrent) run:624, ThreadPoolExecutor$Worker (java.util.concurrent) run:748, Thread (java.lang) executeRun:76, HazelcastManagedThread (com.hazelcast.internal.util.executor) run:102, HazelcastManagedThread (com.hazelcast.internal.util.executor)
MapClearMessageTask sınıfı şöyle. Yani her partition için bir com.hazelcast.map.impl.operation.ClearOperation nesnesi üretiyor.
@Override
protected OperationFactory createOperationFactory() {
MapOperationProvider operationProvider = getOperationProvider(parameters);
return operationProvider.createClearOperationFactory(parameters);
}
Hiç yorum yok:
Yorum Gönder