public class MigrationRequestOperation extends Operation
Boolean.TRUE indicates a successful migration.
It runs on the migration source and transfers the partition with multiple shots.
It divides the partition data into fragments and send a group of fragments within each shot.| Modifier and Type | Field and Description |
|---|---|
protected List<MigrationInfo> |
completedMigrations |
protected MigrationInfo |
migrationInfo |
protected int |
partitionStateVersion |
protected boolean |
success |
GENERIC_PARTITION_ID| Constructor and Description |
|---|
MigrationRequestOperation() |
MigrationRequestOperation(MigrationInfo migrationInfo,
List<MigrationInfo> completedMigrations,
int partitionStateVersion,
boolean fragmentedMigrationEnabled) |
| Modifier and Type | Method and Description |
|---|---|
void |
beforeRun()
The beforeRun is called before either the
Operation.run() or the Operation.call() method is called. |
CallStatus |
call()
Call the operation and returns the CallStatus.
|
int |
getFactoryId()
Returns DataSerializableFactory factory ID for this class.
|
int |
getId()
Returns type identifier for this class.
|
protected PartitionMigrationEvent |
getMigrationEvent()
Returns the event which will be forwarded to
MigrationAwareServices. |
MigrationInfo |
getMigrationInfo() |
protected InternalMigrationListener.MigrationParticipant |
getMigrationParticipantType() |
Object |
getResponse()
Called if and only if
Operation.returnsResponse() returned true,
shortly after Operation.run() returns. |
void |
logError(Throwable e)
Logs Exception/Error thrown during operation execution.
|
ExceptionAction |
onInvocationException(Throwable throwable)
Called when an Exception/Error is thrown
during an invocation.
|
protected void |
readInternal(ObjectDataInput in) |
protected void |
toString(StringBuilder sb)
A template method allows for additional information to be passed into
the
Operation.toString() method. |
boolean |
validatesTarget() |
protected void |
writeInternal(ObjectDataOutput out) |
afterRun, executedLocally, getCallerAddress, getCallerUuid, getCallId, getCallTimeout, getConnection, getInvocationTime, getLogger, getNodeEngine, getOperationResponseHandler, getPartitionId, getReplicaIndex, getService, getServiceName, getWaitTimeout, isUrgent, onExecutionFailure, onSetCallId, readData, requiresExplicitServiceName, returnsResponse, run, sendResponse, setCallerUuid, setNodeEngine, setOperationResponseHandler, setPartitionId, setReplicaIndex, setService, setServiceName, setValidateTarget, setWaitTimeout, toString, writeDataclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetPartitionIdreadData, writeDataprotected MigrationInfo migrationInfo
protected boolean success
protected List<MigrationInfo> completedMigrations
protected int partitionStateVersion
public MigrationRequestOperation()
public MigrationRequestOperation(MigrationInfo migrationInfo, List<MigrationInfo> completedMigrations, int partitionStateVersion, boolean fragmentedMigrationEnabled)
public CallStatus call() throws Exception
OperationOperation.run() methods will be replaced by call
methods.
The call method looks very much like the Operation.run() method and it is
very close to Runnable.run() and Callable.call().
The main difference between a run and call, is that the returned
CallStatus from the call can tell something about the actual execution.
For example it could tell that some waiting is required in case of a
BlockingOperation. Or that the actual execution work is
offloaded to some executor in case of an
Offloadable
EntryOperation.
In the future new types of CallStatus are expected to be added, e.g. for
interleaving.
In the future it is very likely that for regular Operation that want to
return a concrete response, the actual response can be returned directly.
In this case we'll change the return type to Object to prevent
forcing the response to be wrapped in a CallStatus.DONE_RESPONSE
monad since that would force additional litter to be created.call in class OperationException - if something failed while executing 'call'.Operation.run()protected PartitionMigrationEvent getMigrationEvent()
MigrationAwareServices.protected InternalMigrationListener.MigrationParticipant getMigrationParticipantType()
public int getId()
IdentifiedDataSerializableprotected void writeInternal(ObjectDataOutput out) throws IOException
IOExceptionprotected void readInternal(ObjectDataInput in) throws IOException
IOExceptionpublic final void beforeRun()
throws Exception
Operation.run() or the Operation.call() method is called.
runs before wait-support
Validates the migration operation: the UUIDs of the node should match the one in the migrationInfo,
the cluster should be in ClusterState.ACTIVE and the node started and the partition state version from
the sender should match the local partition state version.beforeRun in class OperationIllegalStateException - if the UUIDs don't match or if the cluster and node state are notPartitionStateVersionMismatchException - if the partition versions don't match and this node is not the master nodeExceptionpublic MigrationInfo getMigrationInfo()
public Object getResponse()
OperationOperation.returnsResponse() returned true,
shortly after Operation.run() returns.getResponse in class Operationpublic final boolean validatesTarget()
validatesTarget in class Operationpublic ExceptionAction onInvocationException(Throwable throwable)
OperationonInvocationException in class Operationthrowable - Exception/Error thrown during
invocationpublic void logError(Throwable e)
Operationprotected void toString(StringBuilder sb)
OperationOperation.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 to always call the super.toString(stringBuffer)
when implementing this method to make sure that the super class can
inject content if needed.public final int getFactoryId()
IdentifiedDataSerializablegetFactoryId in interface IdentifiedDataSerializableCopyright © 2020 Hazelcast, Inc.. All Rights Reserved.