protected void startClusterMerge(Address targetAddress, int expectedMemberListVersion) { ClusterServiceImpl clusterService = node.clusterService; if (!prepareClusterState(clusterService, expectedMemberListVersion)) { return; } OperationService operationService = node.nodeEngine.getOperationService(); Collection<Member> memberList = clusterService.getMembers(); Collection<Future> futures = new ArrayList<Future>(memberList.size()); for (Member member : memberList) { if (!member.localMember()) { Operation op = new MergeClustersOp(targetAddress); Future<Object> future = operationService.invokeOnTarget(ClusterServiceImpl.SERVICE_NAME, op, member.getAddress()); futures.add(future); } } waitWithDeadline(futures, SPLIT_BRAIN_MERGE_TIMEOUT_SECONDS, TimeUnit.SECONDS, splitBrainMergeExceptionHandler); Operation op = new MergeClustersOp(targetAddress); op.setNodeEngine(node.nodeEngine).setService(clusterService).setOperationResponseHandler(createEmptyResponseHandler()); operationService.run(op); }
protected void startClusterMerge(Address targetAddress, int expectedMemberListVersion) { ClusterServiceImpl clusterService = node.clusterService; if (!prepareClusterState(clusterService, expectedMemberListVersion)) { return; } OperationService operationService = node.nodeEngine.getOperationService(); Collection<Member> memberList = clusterService.getMembers(); Collection<Future> futures = new ArrayList<Future>(memberList.size()); for (Member member : memberList) { if (!member.localMember()) { Operation op = new MergeClustersOp(targetAddress); Future<Object> future = operationService.invokeOnTarget(ClusterServiceImpl.SERVICE_NAME, op, member.getAddress()); futures.add(future); } } waitWithDeadline(futures, SPLIT_BRAIN_MERGE_TIMEOUT_SECONDS, TimeUnit.SECONDS, splitBrainMergeExceptionHandler); Operation op = new MergeClustersOp(targetAddress); op.setNodeEngine(node.nodeEngine).setService(clusterService).setOperationResponseHandler(createEmptyResponseHandler()); operationService.run(op); }