public final class PartitionIteratingOperation extends Operation implements IdentifiedDataSerializable
THe execution used to be synchronous; so the thread executing this PartitionIteratingOperation would block till all
the child requests are done. In 3.8 this is made asynchronous so that the thread isn't consumed and available for
other tasks. On each partition operation an OperationResponseHandler
is set, that sends the result to the
caller when all responses have completed.
Modifier and Type | Class and Description |
---|---|
static class |
PartitionIteratingOperation.PartitionResponse |
GENERIC_PARTITION_ID
Constructor and Description |
---|
PartitionIteratingOperation() |
PartitionIteratingOperation(OperationFactory operationFactory,
int[] partitions) |
Modifier and Type | Method and Description |
---|---|
int |
getFactoryId()
Returns DataSerializableFactory factory ID for this class.
|
int |
getId()
Returns type identifier for this class.
|
OperationFactory |
getOperationFactory() |
void |
onExecutionFailure(Throwable cause)
Called when an Exception/Error is thrown during operation execution.
|
protected void |
readInternal(ObjectDataInput in) |
boolean |
returnsResponse()
Method is intended to be subclassed.
|
void |
run() |
protected void |
toString(StringBuilder sb)
A template method allows for additional information to be passed into the
Operation.toString() method. |
protected void |
writeInternal(ObjectDataOutput out) |
afterRun, beforeRun, call, executedLocally, getCallerAddress, getCallerUuid, getCallId, getCallTimeout, getConnection, getInvocationTime, getLogger, getNodeEngine, getOperationResponseHandler, getPartitionId, getReplicaIndex, getResponse, getService, getServiceName, getWaitTimeout, isUrgent, logError, onInvocationException, onSetCallId, readData, sendResponse, setCallerUuid, setNodeEngine, setOperationResponseHandler, setPartitionId, setReplicaIndex, setService, setServiceName, setValidateTarget, setWaitTimeout, toString, validatesTarget, writeData
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
readData, writeData
public PartitionIteratingOperation()
public PartitionIteratingOperation(OperationFactory operationFactory, int[] partitions)
operationFactory
- operation factory to usepartitions
- partitions to invoke onpublic OperationFactory getOperationFactory()
public boolean returnsResponse()
Operation
true
, Operation.getResponse()
will be
called right after Operation.run()
method. If it returns false
, Operation.sendResponse(Object)
must be called later to finish the operation.
In other words, true
is for synchronous operation and false
is for asynchronous one.
Default implementation is synchronous operation (true
).
returnsResponse
in class Operation
public void onExecutionFailure(Throwable cause)
Operation
onExecutionFailure
in class Operation
cause
- Exception/Error thrown during operation executionpublic int getFactoryId()
IdentifiedDataSerializable
getFactoryId
in interface IdentifiedDataSerializable
public int getId()
IdentifiedDataSerializable
getId
in interface IdentifiedDataSerializable
protected void writeInternal(ObjectDataOutput out) throws IOException
writeInternal
in class Operation
IOException
protected void readInternal(ObjectDataInput in) throws IOException
readInternal
in class Operation
IOException
protected void toString(StringBuilder sb)
Operation
Operation.toString()
method. So an Operation
subclass can override this method and add additional debugging content. The default implementation does nothing so
one is not forced to provide an empty implementation.
It is a good practice always to call the super.toString(stringBuffer) when implementing this method to make sure
that the super class can inject content if needed.Copyright © 2018 Hazelcast, Inc.. All Rights Reserved.