private void handleNotActiveOrNotJoined(JoinMessage joinMessage) { if (isJoinRequest(joinMessage)) { Joiner joiner = node.getJoiner(); if (joiner instanceof MulticastJoiner) { MulticastJoiner multicastJoiner = (MulticastJoiner) joiner; multicastJoiner.onReceivedJoinRequest((JoinRequest) joinMessage); } else { logDroppedMessage(joinMessage); } } else { Address address = joinMessage.getAddress(); if (node.getJoiner().isBlacklisted(address)) { logDroppedMessage(joinMessage); return; } ClusterServiceImpl clusterService = node.getClusterService(); if (!clusterService.isJoined() && clusterService.getMasterAddress() == null) { clusterService.setMasterAddressToJoin(joinMessage.getAddress()); } else { logDroppedMessage(joinMessage); } } }
private void handleNotActiveOrNotJoined(JoinMessage joinMessage) { if (isJoinRequest(joinMessage)) { Joiner joiner = node.getJoiner(); if (joiner instanceof MulticastJoiner) { MulticastJoiner multicastJoiner = (MulticastJoiner) joiner; multicastJoiner.onReceivedJoinRequest((JoinRequest) joinMessage); } else { logDroppedMessage(joinMessage); } } else { Address address = joinMessage.getAddress(); if (node.getJoiner().isBlacklisted(address)) { logDroppedMessage(joinMessage); return; } ClusterServiceImpl clusterService = node.getClusterService(); if (!clusterService.isJoined() && clusterService.getMasterAddress() == null) { clusterService.setMasterAddressToJoin(joinMessage.getAddress()); } else { logDroppedMessage(joinMessage); } } }
@Override public void onMessage(Object msg) { if (!isValidJoinMessage(msg)) { logDroppedMessage(msg); return; } JoinMessage joinMessage = (JoinMessage) msg; if (node.isRunning() && node.getClusterService().isJoined()) { handleActiveAndJoined(joinMessage); } else { handleNotActiveOrNotJoined(joinMessage); } }
@Override public void onMessage(Object msg) { if (!isValidJoinMessage(msg)) { logDroppedMessage(msg); return; } JoinMessage joinMessage = (JoinMessage) msg; if (node.isRunning() && node.getClusterService().isJoined()) { handleActiveAndJoined(joinMessage); } else { handleNotActiveOrNotJoined(joinMessage); } }
private void handleActiveAndJoined(JoinMessage joinMessage) { if (!(joinMessage instanceof JoinRequest)) { logDroppedMessage(joinMessage); return; } ClusterServiceImpl clusterService = node.getClusterService(); Address masterAddress = clusterService.getMasterAddress(); if (clusterService.isMaster()) { JoinMessage response = new JoinMessage(Packet.VERSION, node.getBuildInfo().getBuildNumber(), node.getVersion(), node.getThisAddress(), node.getThisUuid(), node.isLiteMember(), node.createConfigCheck()); node.multicastService.send(response); } else if (joinMessage.getAddress().equals(masterAddress)) { MemberImpl master = node.getClusterService().getMember(masterAddress); if (master != null && !master.getUuid().equals(joinMessage.getUuid())) { String message = "New join request has been received from current master. Suspecting " + masterAddress; logger.warning(message); // I just make a local suspicion. Probably other nodes will eventually suspect as well. clusterService.suspectMember(master, message, false); } } }
private void handleActiveAndJoined(JoinMessage joinMessage) { if (!(joinMessage instanceof JoinRequest)) { logDroppedMessage(joinMessage); return; } ClusterServiceImpl clusterService = node.getClusterService(); Address masterAddress = clusterService.getMasterAddress(); if (clusterService.isMaster()) { JoinMessage response = new JoinMessage(Packet.VERSION, node.getBuildInfo().getBuildNumber(), node.getVersion(), node.getThisAddress(), node.getThisUuid(), node.isLiteMember(), node.createConfigCheck()); node.multicastService.send(response); } else if (joinMessage.getAddress().equals(masterAddress)) { MemberImpl master = node.getClusterService().getMember(masterAddress); if (master != null && !master.getUuid().equals(joinMessage.getUuid())) { String message = "New join request has been received from current master. Suspecting " + masterAddress; logger.warning(message); // I just make a local suspicion. Probably other nodes will eventually suspect as well. clusterService.suspectMember(master, message, false); } } }