use of com.hazelcast.internal.partition.operation.ReplicaSyncRequest in project hazelcast by hazelcast.
the class PartitionDataSerializerHook method createFactory.
@Override
public DataSerializableFactory createFactory() {
ConstructorFunction<Integer, IdentifiedDataSerializable>[] constructors = new ConstructorFunction[LEN];
constructors[PARTITION_RUNTIME_STATE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new PartitionRuntimeState();
}
};
constructors[ASSIGN_PARTITIONS] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new AssignPartitions();
}
};
constructors[CHECK_REPLICA_VERSION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new CheckReplicaVersion();
}
};
constructors[FETCH_PARTITION_STATE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new FetchPartitionStateOperation();
}
};
constructors[HAS_ONGOING_MIGRATION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new HasOngoingMigration();
}
};
constructors[MIGRATION_COMMIT] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new MigrationCommitOperation();
}
};
constructors[MIGRATION] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new MigrationOperation();
}
};
constructors[MIGRATION_REQUEST] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new MigrationRequestOperation();
}
};
constructors[PARTITION_STATE_OP] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new PartitionStateOperation();
}
};
constructors[PROMOTION_COMMIT] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new PromotionCommitOperation();
}
};
constructors[REPLICA_SYNC_REQUEST] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new ReplicaSyncRequest();
}
};
constructors[REPLICA_SYNC_RESPONSE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new ReplicaSyncResponse();
}
};
constructors[REPLICA_SYNC_RETRY_RESPONSE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new ReplicaSyncRetryResponse();
}
};
constructors[SAFE_STATE_CHECK] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new SafeStateCheckOperation();
}
};
constructors[SHUTDOWN_REQUEST] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new ShutdownRequestOperation();
}
};
constructors[SHUTDOWN_RESPONSE] = new ConstructorFunction<Integer, IdentifiedDataSerializable>() {
public IdentifiedDataSerializable createNew(Integer arg) {
return new ShutdownResponseOperation();
}
};
return new ArrayDataSerializableFactory(constructors);
}
use of com.hazelcast.internal.partition.operation.ReplicaSyncRequest in project hazelcast by hazelcast.
the class PartitionReplicaManager method fireSyncReplicaRequest.
/**
* Send the sync request to {@code target} if the max number of parallel sync requests has not been made and the target
* was not removed while the cluster was not active. Also cancel any currently scheduled sync requests for the given
* partition and schedule a new sync request that is to be run in the case of timeout
*/
private boolean fireSyncReplicaRequest(ReplicaSyncInfo syncInfo, Address target) {
if (node.clusterService.isMemberRemovedWhileClusterIsNotActive(target)) {
return false;
}
if (tryToAcquireReplicaSyncPermit()) {
int partitionId = syncInfo.partitionId;
int replicaIndex = syncInfo.replicaIndex;
replicaSyncScheduler.cancel(partitionId);
if (logger.isFinestEnabled()) {
logger.finest("Sending sync replica request to -> " + target + "; for partitionId=" + partitionId + ", replicaIndex=" + replicaIndex);
}
replicaSyncRequestsCounter.inc();
replicaSyncScheduler.schedule(partitionMigrationTimeout, partitionId, syncInfo);
ReplicaSyncRequest syncRequest = new ReplicaSyncRequest(partitionId, replicaIndex);
nodeEngine.getOperationService().send(syncRequest, target);
return true;
}
return false;
}
Aggregations