void doRemoveAddress(Address deadAddress, boolean destroyConnection) { checkServiceThread(); logger.log(Level.INFO, "Removing Address " + deadAddress); if (!node.joined()) { node.failedConnection(deadAddress); return; } if (deadAddress.equals(thisAddress)) return; if (deadAddress.equals(getMasterAddress())) { if (node.joined()) { MemberImpl newMaster = getNextMemberAfter(deadAddress, false, 1); if (newMaster != null) node.setMasterAddress(newMaster.getAddress()); else node.setMasterAddress(null); } else { node.setMasterAddress(null); } logger.log(Level.FINEST, "Now Master " + node.getMasterAddress()); } if (isMaster()) { setJoins.remove(new MemberInfo(deadAddress)); resetMemberMasterConfirmations(); } final Connection conn = node.connectionManager.getConnection(deadAddress); if (destroyConnection && conn != null) { node.connectionManager.destroyConnection(conn); } MemberImpl deadMember = getMember(deadAddress); if (deadMember != null) { removeMember(deadMember); node.getClusterImpl().setMembers(lsMembers); node.concurrentMapManager.syncForDead(deadMember); node.blockingQueueManager.syncForDead(deadAddress); node.listenerManager.syncForDead(deadAddress); node.topicManager.syncForDead(deadAddress); // node.getClusterImpl().setMembers(lsMembers); // shifted up to get members in syncForDead // methods disconnectExistingCalls(deadAddress); if (isMaster()) { logger.log(Level.FINEST, deadAddress + " is dead. Sending remove to all other members."); sendRemoveMemberToOthers(deadAddress); } logger.log(Level.INFO, this.toString()); } }
public void deregisterScheduledAction(ScheduledAction scheduledAction) { setScheduledActions.remove(scheduledAction); }