void sendExplicitSuspicionTrigger(Address triggerTo, MembersViewMetadata endpointMembersViewMetadata) { if (triggerTo.equals(node.getThisAddress())) { logger.warning("Cannot send explicit suspicion trigger for " + endpointMembersViewMetadata + " to itself."); return; } int memberListVersion = membershipManager.getMemberListVersion(); Operation op = new TriggerExplicitSuspicionOp(memberListVersion, endpointMembersViewMetadata); OperationService operationService = nodeEngine.getOperationService(); operationService.send(op, triggerTo); }
void sendExplicitSuspicionTrigger(Address triggerTo, MembersViewMetadata endpointMembersViewMetadata) { if (triggerTo.equals(node.getThisAddress())) { logger.warning("Cannot send explicit suspicion trigger for " + endpointMembersViewMetadata + " to itself."); return; } int memberListVersion = membershipManager.getMemberListVersion(); Operation op = new TriggerExplicitSuspicionOp(memberListVersion, endpointMembersViewMetadata); OperationService operationService = nodeEngine.getOperationService(); operationService.send(op, triggerTo); }
private boolean ensureValidConfiguration(JoinMessage joinMessage) { Address address = joinMessage.getAddress(); try { if (isValidJoinMessage(joinMessage)) { return true; } logger.warning(format("Received an invalid join request from %s, cause: clusters part of different cluster-groups", address)); nodeEngine.getOperationService().send(new GroupMismatchOp(), address); } catch (ConfigMismatchException e) { logger.warning(format("Received an invalid join request from %s, cause: %s", address, e.getMessage())); OperationService operationService = nodeEngine.getOperationService(); operationService.send(new ConfigMismatchOp(e.getMessage()), address); } return false; }
private boolean ensureValidConfiguration(JoinMessage joinMessage) { Address address = joinMessage.getAddress(); try { if (isValidJoinMessage(joinMessage)) { return true; } logger.warning(format("Received an invalid join request from %s, cause: clusters part of different cluster-groups", address)); nodeEngine.getOperationService().send(new GroupMismatchOp(), address); } catch (ConfigMismatchException e) { logger.warning(format("Received an invalid join request from %s, cause: %s", address, e.getMessage())); OperationService operationService = nodeEngine.getOperationService(); operationService.send(new ConfigMismatchOp(e.getMessage()), address); } return false; }
OperationService operationService = nodeEngine.getOperationService(); Operation op = new ExplicitSuspicionOp(senderMembersViewMetadata); operationService.send(op, senderAddress);
/** Send a response to the replica to retry the replica sync */ private void sendRetryResponse() { NodeEngine nodeEngine = getNodeEngine(); int partitionId = getPartitionId(); int replicaIndex = getReplicaIndex(); PartitionReplicaSyncRetryResponse response = new PartitionReplicaSyncRetryResponse(namespaces); response.setPartitionId(partitionId).setReplicaIndex(replicaIndex); Address target = getCallerAddress(); OperationService operationService = nodeEngine.getOperationService(); operationService.send(response, target); }
/** Send a response to the replica to retry the replica sync */ private void sendRetryResponse() { NodeEngine nodeEngine = getNodeEngine(); int partitionId = getPartitionId(); int replicaIndex = getReplicaIndex(); PartitionReplicaSyncRetryResponse response = new PartitionReplicaSyncRetryResponse(namespaces); response.setPartitionId(partitionId).setReplicaIndex(replicaIndex); Address target = getCallerAddress(); OperationService operationService = nodeEngine.getOperationService(); operationService.send(response, target); }
final void invokePartitionBackupReplicaAntiEntropyOp(int replicaIndex, Address target, Collection<ServiceNamespace> namespaces, ExecutionCallback callback) { PartitionReplicaManager replicaManager = partitionService.getReplicaManager(); Map<ServiceNamespace, Long> versionMap = new HashMap<ServiceNamespace, Long>(); for (ServiceNamespace ns : namespaces) { long[] versions = replicaManager.getPartitionReplicaVersions(partitionId, ns); long currentReplicaVersion = versions[replicaIndex - 1]; if (currentReplicaVersion > 0) { versionMap.put(ns, currentReplicaVersion); } } boolean hasCallback = (callback != null); PartitionBackupReplicaAntiEntropyOperation op = new PartitionBackupReplicaAntiEntropyOperation(versionMap, hasCallback); op.setPartitionId(partitionId).setReplicaIndex(replicaIndex).setServiceName(SERVICE_NAME); OperationService operationService = nodeEngine.getOperationService(); if (hasCallback) { operationService.createInvocationBuilder(SERVICE_NAME, op, target) .setExecutionCallback(callback) .setTryCount(OPERATION_TRY_COUNT) .setTryPauseMillis(OPERATION_TRY_PAUSE_MILLIS) .invoke(); } else { operationService.send(op, target); } }
private void sendHeartbeatComplaintToMaster(MembersViewMetadata senderMembersViewMetadata) { if (clusterService.isMaster()) { logger.warning("Cannot send heartbeat complaint for " + senderMembersViewMetadata + " to itself."); return; } Address masterAddress = clusterService.getMasterAddress(); if (masterAddress == null) { logger.fine("Cannot send heartbeat complaint for " + senderMembersViewMetadata.getMemberAddress() + ", master address is not set."); return; } MembersViewMetadata localMembersViewMetadata = clusterService.getMembershipManager().createLocalMembersViewMetadata(); Operation op = new HeartbeatComplaintOp(localMembersViewMetadata, senderMembersViewMetadata); OperationService operationService = nodeEngine.getOperationService(); operationService.send(op, masterAddress); }
private void sendHeartbeatComplaintToMaster(MembersViewMetadata senderMembersViewMetadata) { if (clusterService.isMaster()) { logger.warning("Cannot send heartbeat complaint for " + senderMembersViewMetadata + " to itself."); return; } Address masterAddress = clusterService.getMasterAddress(); if (masterAddress == null) { logger.fine("Cannot send heartbeat complaint for " + senderMembersViewMetadata.getMemberAddress() + ", master address is not set."); return; } MembersViewMetadata localMembersViewMetadata = clusterService.getMembershipManager().createLocalMembersViewMetadata(); Operation op = new HeartbeatComplaintOp(localMembersViewMetadata, senderMembersViewMetadata); OperationService operationService = nodeEngine.getOperationService(); operationService.send(op, masterAddress); }
/** Send a synchronization response to the caller replica containing the replication operations to be executed */ private void sendResponse(Collection<Operation> operations, ServiceNamespace ns) { NodeEngine nodeEngine = getNodeEngine(); PartitionReplicaSyncResponse syncResponse = createResponse(operations, ns); Address target = getCallerAddress(); ILogger logger = getLogger(); if (logger.isFinestEnabled()) { logger.finest("Sending sync response to -> " + target + " for partitionId=" + getPartitionId() + ", replicaIndex=" + getReplicaIndex() + ", namespaces=" + ns); } // PartitionReplicaSyncResponse is TargetAware and sent directly without invocation system. syncResponse.setTarget(target); OperationService operationService = nodeEngine.getOperationService(); operationService.send(syncResponse, target); }
/** Send a synchronization response to the caller replica containing the replication operations to be executed */ private void sendResponse(Collection<Operation> operations, ServiceNamespace ns) { NodeEngine nodeEngine = getNodeEngine(); PartitionReplicaSyncResponse syncResponse = createResponse(operations, ns); Address target = getCallerAddress(); ILogger logger = getLogger(); if (logger.isFinestEnabled()) { logger.finest("Sending sync response to -> " + target + " for partitionId=" + getPartitionId() + ", replicaIndex=" + getReplicaIndex() + ", namespaces=" + ns); } // PartitionReplicaSyncResponse is TargetAware and sent directly without invocation system. syncResponse.setTarget(target); OperationService operationService = nodeEngine.getOperationService(); operationService.send(syncResponse, target); }
final void invokePartitionBackupReplicaAntiEntropyOp(int replicaIndex, PartitionReplica target, Collection<ServiceNamespace> namespaces, ExecutionCallback callback) { if (skipSendingToTarget(target)) { return; } PartitionReplicaManager replicaManager = partitionService.getReplicaManager(); Map<ServiceNamespace, Long> versionMap = new HashMap<ServiceNamespace, Long>(); for (ServiceNamespace ns : namespaces) { long[] versions = replicaManager.getPartitionReplicaVersions(partitionId, ns); long currentReplicaVersion = versions[replicaIndex - 1]; if (currentReplicaVersion > 0) { versionMap.put(ns, currentReplicaVersion); } } boolean hasCallback = (callback != null); PartitionBackupReplicaAntiEntropyOperation op = new PartitionBackupReplicaAntiEntropyOperation(versionMap, hasCallback); op.setPartitionId(partitionId).setReplicaIndex(replicaIndex).setServiceName(SERVICE_NAME); OperationService operationService = nodeEngine.getOperationService(); if (hasCallback) { operationService.createInvocationBuilder(SERVICE_NAME, op, target.address()) .setExecutionCallback(callback) .setTryCount(OPERATION_TRY_COUNT) .setTryPauseMillis(OPERATION_TRY_PAUSE_MILLIS) .invoke(); } else { operationService.send(op, target.address()); } }
private boolean checkIfUsingAnExistingMemberUuid(JoinMessage joinMessage) { Member member = clusterService.getMember(joinMessage.getUuid()); Address target = joinMessage.getAddress(); if (member != null && !member.getAddress().equals(joinMessage.getAddress())) { if (clusterService.isMaster() && !isMastershipClaimInProgress()) { String message = "There's already an existing member " + member + " with the same UUID. " + target + " is not allowed to join."; logger.warning(message); OperationService operationService = nodeEngine.getOperationService(); operationService.send(new BeforeJoinCheckFailureOp(message), target); } else { sendMasterAnswer(target); } return true; } return false; }
public static <V> V executeOperation(Operation operation, Address address, MapReduceService mapReduceService, NodeEngine nodeEngine) { ClusterService cs = nodeEngine.getClusterService(); OperationService os = nodeEngine.getOperationService(); boolean returnsResponse = operation.returnsResponse(); try { if (cs.getThisAddress().equals(address)) { // Locally we can call the operation directly operation.setNodeEngine(nodeEngine); operation.setCallerUuid(nodeEngine.getLocalMember().getUuid()); operation.setService(mapReduceService); operation.run(); if (returnsResponse) { return (V) operation.getResponse(); } } else { if (returnsResponse) { InvocationBuilder ib = os.createInvocationBuilder(SERVICE_NAME, operation, address); return (V) ib.invoke().get(); } else { os.send(operation, address); } } } catch (Exception e) { throw new RuntimeException(e); } return null; }
public static <V> V executeOperation(Operation operation, Address address, MapReduceService mapReduceService, NodeEngine nodeEngine) { ClusterService cs = nodeEngine.getClusterService(); OperationService os = nodeEngine.getOperationService(); boolean returnsResponse = operation.returnsResponse(); try { if (cs.getThisAddress().equals(address)) { // Locally we can call the operation directly operation.setNodeEngine(nodeEngine); operation.setCallerUuid(nodeEngine.getLocalMember().getUuid()); operation.setService(mapReduceService); operation.run(); if (returnsResponse) { return (V) operation.getResponse(); } } else { if (returnsResponse) { InvocationBuilder ib = os.createInvocationBuilder(SERVICE_NAME, operation, address); return (V) ib.invoke().get(); } else { os.send(operation, address); } } } catch (Exception e) { throw new RuntimeException(e); } return null; }
public static void notifyRemoteException(JobSupervisor supervisor, Throwable throwable) { MapReduceService mapReduceService = supervisor.getMapReduceService(); NodeEngine nodeEngine = mapReduceService.getNodeEngine(); try { Address jobOwner = supervisor.getJobOwner(); if (supervisor.isOwnerNode()) { supervisor.notifyRemoteException(jobOwner, throwable); } else { String name = supervisor.getConfiguration().getName(); String jobId = supervisor.getConfiguration().getJobId(); NotifyRemoteExceptionOperation operation = new NotifyRemoteExceptionOperation(name, jobId, throwable); OperationService os = nodeEngine.getOperationService(); os.send(operation, jobOwner); } } catch (Exception e) { ILogger logger = nodeEngine.getLogger(MapReduceUtil.class); logger.warning("Could not notify remote map-reduce owner", e); } }
public static void notifyRemoteException(JobSupervisor supervisor, Throwable throwable) { MapReduceService mapReduceService = supervisor.getMapReduceService(); NodeEngine nodeEngine = mapReduceService.getNodeEngine(); try { Address jobOwner = supervisor.getJobOwner(); if (supervisor.isOwnerNode()) { supervisor.notifyRemoteException(jobOwner, throwable); } else { String name = supervisor.getConfiguration().getName(); String jobId = supervisor.getConfiguration().getJobId(); NotifyRemoteExceptionOperation operation = new NotifyRemoteExceptionOperation(name, jobId, throwable); OperationService os = nodeEngine.getOperationService(); os.send(operation, jobOwner); } } catch (Exception e) { ILogger logger = nodeEngine.getLogger(MapReduceUtil.class); logger.warning("Could not notify remote map-reduce owner", e); } }
if (!member.localMember()) { try { operationService.send(op, member.getAddress()); } catch (Exception e) { logger.finest(e);
if (!member.localMember()) { try { operationService.send(op, member.getAddress()); } catch (Exception e) { logger.finest(e);