public static Pair<TransportConfiguration, TransportConfiguration> checkTCPPairConversion(int clientIncrementingVersion, TopologyMember member) { if (clientIncrementingVersion < INITIAL_ACTIVEMQ_INCREMENTING_VERSION) { return new Pair<>(convertTransport(member.getLive()), convertTransport(member.getBackup())); } return new Pair<>(member.getLive(), member.getBackup()); }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { try { lock.lock(); Pair<TransportConfiguration, TransportConfiguration> connector = new Pair<>(topologyMember.getLive(), topologyMember.getBackup()); if (server.checkLiveIsNotColocated(topologyMember.getNodeId())) { untriedConnectors.put(topologyMember.getNodeId(), connector); condition.signal(); } } finally { lock.unlock(); } }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { try { lock.lock(); if (backupGroupName.equals(topologyMember.getBackupGroupName()) && topologyMember.getLive() != null) { Pair<TransportConfiguration, TransportConfiguration> liveConfiguration = new Pair<>(topologyMember.getLive(), topologyMember.getBackup()); if (!liveConfigurations.contains(liveConfiguration)) { liveConfigurations.add(liveConfiguration); } nodeID = topologyMember.getNodeId(); condition.signal(); } } finally { lock.unlock(); } }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { try { lock.lock(); Pair<TransportConfiguration, TransportConfiguration> connector = new Pair<>(topologyMember.getLive(), topologyMember.getBackup()); if (topologyMember.getNodeId().equals(myNodeID)) { if (logger.isTraceEnabled()) { logger.trace(this + "::informing node about itself, nodeUUID=" + server.getNodeID() + ", connectorPair=" + topologyMember + ", this = " + this); } return; } if (scaleDownGroupName.equals(topologyMember.getScaleDownGroupName()) && topologyMember.getLive() != null && server.checkLiveIsNotColocated(topologyMember.getNodeId())) { connectors.put(topologyMember.getNodeId(), connector); condition.signal(); } } finally { lock.unlock(); } }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { Pair<TransportConfiguration, TransportConfiguration> connectorPair = new Pair<>(topologyMember.getLive(), topologyMember.getBackup()); nodes.put(topologyMember.getBackupGroupName(), connectorPair); }
@Override public void onConnection(ClientSessionFactoryInternal sf) { TopologyMember localMember = getLocalMember(); if (localMember != null) { ClusterControl clusterControl = manager.getClusterController().connectToNodeInCluster(sf); try { clusterControl.authorize(); clusterControl.sendNodeAnnounce(localMember.getUniqueEventID(), manager.getNodeId(), manager.getBackupGroupName(), manager.getScaleDownGroupName(), false, localMember.getLive(), localMember.getBackup()); } catch (ActiveMQException e) { ActiveMQServerLogger.LOGGER.clusterControlAuthfailure(); } } else { ActiveMQServerLogger.LOGGER.noLocalMemborOnClusterConnection(this); } // TODO: shouldn't we send the current time here? and change the current topology? // sf.sendNodeAnnounce(System.currentTimeMillis(), // manager.getNodeId(), // false, // localMember.getConnector().a, // localMember.getConnector().b); }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { // If the backup is this node then ignore. if (myTc.equals(topologyMember.getBackup())) { return; } final String nodeID = topologyMember.getNodeId(); if (ownId.equals(nodeID) && topologyMember.getBackup() != null) latch.countDown(); }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { boolean isOurNodeId = nodeId != null && nodeId.toString().equals(topologyMember.getNodeId()); if (isOurNodeId && isActive(topologyMember.getLive())) { isNodePresent = true; } if (isOurNodeId || last) { latch.countDown(); } }
return; final String nodeID = topologyMember.getNodeId(); if (logger.isDebugEnabled()) { String ClusterTestBase = "receiving nodeUP for nodeID="; if (allowDirectConnectionsOnly && !allowableConnections.contains(topologyMember.getLive().newTransportConfig(TRANSPORT_CONFIG_NAME))) { return; if (topologyMember.getLive() == null) { if (logger.isTraceEnabled()) { logger.trace(this + " ignoring call with nodeID=" + nodeID + ", topologyMember=" + createNewRecord(topologyMember.getUniqueEventID(), nodeID, topologyMember.getLive(), queueName, queue, true); } else { if (logger.isTraceEnabled()) {
@Override protected void nodeUP(TopologyMember member, boolean last) { if (member != null && targetNodeID != null && !this.targetNodeID.equals(member.getNodeId())) { //A ClusterConnectionBridge (identified by holding an internal queue) //never re-connects to another node here. It only connects to its original //target node (from the ClusterConnection) or its backups. That's why //we put a return here. return; } super.nodeUP(member, last); }
@Override public void nodeUP(TopologyMember member, boolean last) { boolean newNode = false; String id = member.getNodeId(); if (!nodes.contains(id)) { if (removedNodes.get(id) == null || (removedNodes.get(id) != null && removedNodes.get(id) < member.getUniqueEventID())) { nodes.add(id); newNode = true; } } if (lastReceived && newNode) { ActiveMQRALogger.LOGGER.rebalancingConnections("nodeUp " + member.toString()); startReconnectThread("NodeUP Connection Rebalancer"); } else if (last) { lastReceived = true; } }
private int countTopologyMembers(Topology topology) { int count = 0; for (TopologyMember m : topology.getMembers()) { count++; if (m.getBackup() != null) { count++; } } return count; }
protected void nodeUP(TopologyMember member, boolean last) { if (member != null) { ClientSessionInternal sessionToUse = session; RemotingConnection connectionToUse = sessionToUse != null ? sessionToUse.getConnection() : null; if (this.targetNodeID != null && this.targetNodeID.equals(member.getNodeId())) { // this could be an update of the topology say after a backup started BridgeImpl.this.targetNode = member; } else { // we don't need synchronization here, but we need to make sure we won't get a NPE on races if (connectionToUse != null && member.isMember(connectionToUse)) { this.targetNode = member; this.targetNodeID = member.getNodeId(); } } } }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { try { lock.lock(); Pair<TransportConfiguration, TransportConfiguration> connector = new Pair<>(topologyMember.getLive(), topologyMember.getBackup()); if (topologyMember.getNodeId().equals(myNodeID)) { if (logger.isTraceEnabled()) { logger.trace(this + "::informing node about itself, nodeUUID=" + server.getNodeID() + ", connectorPair=" + topologyMember + ", this = " + this); } return; } if (server.checkLiveIsNotColocated(topologyMember.getNodeId())) { connectors.put(topologyMember.getNodeId(), connector); condition.signal(); } } finally { lock.unlock(); } }
@Override public void nodeUP(TopologyMember member, boolean last) { if (topologyMap.put(member.getNodeId(), member) == null) { updateClientClusterInfo(); } }
@Override public void nodeUP(TopologyMember member, boolean last) { boolean newNode = false; String id = member.getNodeId(); if (!nodes.contains(id)) { if (removedNodes.get(id) == null || (removedNodes.get(id) != null && removedNodes.get(id) < member.getUniqueEventID())) { nodes.add(id); newNode = true; } } if (lastReceived && newNode) { ActiveMQRALogger.LOGGER.rebalancingConnections("nodeUp " + member.toString()); startReconnectThread("NodeUP Connection Rebalancer"); } else if (last) { lastReceived = true; } }
@Override public ClientSessionFactory createSessionFactory(String nodeID) throws Exception { TopologyMember topologyMember = topology.getMember(nodeID); if (logger.isTraceEnabled()) { logger.trace("Creating connection factory towards " + nodeID + " = " + topologyMember + ", topology=" + topology.describe()); } if (topologyMember == null) { return null; } if (topologyMember.getLive() != null) { ClientSessionFactoryInternal factory = (ClientSessionFactoryInternal) createSessionFactory(topologyMember.getLive()); if (topologyMember.getBackup() != null) { factory.setBackupConnector(topologyMember.getLive(), topologyMember.getBackup()); } return factory; } if (topologyMember.getLive() == null && topologyMember.getBackup() != null) { // This shouldn't happen, however I wanted this to consider all possible cases ClientSessionFactoryInternal factory = (ClientSessionFactoryInternal) createSessionFactory(topologyMember.getBackup()); return factory; } // it shouldn't happen return null; }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { // There is a case where the backup announce itself, // we need to ignore a case where getLive is null if (topologyMember.getLive() != null) { Pair<TransportConfiguration, TransportConfiguration> connector = new Pair<TransportConfiguration, TransportConfiguration>(topologyMember.getLive(), topologyMember.getBackup()); WildFlyActiveMQRecoveryRegistry.getInstance().nodeUp(config, topologyMember.getNodeId(), connector, config.getUsername(), config.getPassword(), config.getProperties()); } }
@Override public synchronized void nodeUP(TopologyMember topologyMember, boolean last) { final String nodeID = topologyMember.getNodeId(); if (!seenUp.contains(nodeID)) { nodes.add(nodeID); seenUp.add(nodeID); upLatch.countDown(); } }
@Override public void notifyNodeUp(long uniqueEventID, final String nodeID, final String backupGroupName, final String scaleDownGroupName, final Pair<TransportConfiguration, TransportConfiguration> connectorPair, final boolean last) { if (logger.isTraceEnabled()) { logger.trace("NodeUp " + this + "::nodeID=" + nodeID + ", connectorPair=" + connectorPair, new Exception("trace")); } TopologyMemberImpl member = new TopologyMemberImpl(nodeID, backupGroupName, scaleDownGroupName, connectorPair.getA(), connectorPair.getB()); topology.updateMember(uniqueEventID, nodeID, member); TopologyMember actMember = topology.getMember(nodeID); if (actMember != null && actMember.getLive() != null && actMember.getBackup() != null) { HashSet<ClientSessionFactory> clonedFactories = new HashSet<>(); synchronized (factories) { clonedFactories.addAll(factories); } for (ClientSessionFactory factory : clonedFactories) { ((ClientSessionFactoryInternal) factory).setBackupConnector(actMember.getLive(), actMember.getBackup()); } } updateArraysAndPairs(uniqueEventID); if (last) { receivedTopology = true; } }