@Override public void nodeUP(TopologyMember topologyMember, boolean last) { try { lock.lock(); if (nodeGroupName.equals(topologyMember.getBackupGroupName()) && topologyMember.getLive() != null) { liveConfiguration = new Pair<TransportConfiguration, TransportConfiguration>(topologyMember.getLive(), topologyMember.getBackup()); nodeID = topologyMember.getNodeId(); condition.signal(); } } finally { lock.unlock(); } }
public void nodeUP(TopologyMember member, boolean last) { ClientSessionInternal sessionToUse = session; RemotingConnection connectionToUse = sessionToUse != null ? sessionToUse.getConnection() : null; if (member != null && BridgeImpl.this.targetNodeID != null && BridgeImpl.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)) { BridgeImpl.this.targetNode = member; BridgeImpl.this.targetNodeID = member.getNodeId(); } } }
private ClientSessionFactoryInternal reconnectOnOriginalNode() throws Exception { String targetNodeIdUse = targetNodeID; TopologyMember nodeUse = targetNode; if (targetNodeIdUse != null && nodeUse != null) { TransportConfiguration[] configs = new TransportConfiguration[2]; // live and backup int numberOfConfigs = 0; if (nodeUse.getLive() != null) { configs[numberOfConfigs++] = nodeUse.getLive(); } if (nodeUse.getBackup() != null) { configs[numberOfConfigs++] = nodeUse.getBackup(); } if (numberOfConfigs > 0) { // It will bounce between all the available configs int nodeTry = (retryCount - 1) % numberOfConfigs; return (ClientSessionFactoryInternal) serverLocator.createSessionFactory(configs[nodeTry]); } } return null; }
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { try { lock.lock(); Pair<TransportConfiguration, TransportConfiguration> connector = new Pair<TransportConfiguration, TransportConfiguration>(topologyMember.getLive(), topologyMember.getBackup()); if (server.checkLiveIsNotColocated(topologyMember.getNodeId())) { untriedConnectors.put(topologyMember.getNodeId(), connector); condition.signal(); } } finally { lock.unlock(); } }
@Override public void onConnection(ClientSessionFactoryInternal sf) { TopologyMember localMember = getLocalMember(); if (localMember != null) { sf.sendNodeAnnounce(localMember.getUniqueEventID(), manager.getNodeId(), manager.getNodeGroupName(), false, localMember.getLive(), localMember.getBackup()); } else { HornetQServerLogger.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); }
final String nodeID = topologyMember.getNodeId(); if (HornetQServerLogger.LOGGER.isDebugEnabled()) if (allowDirectConnectionsOnly && !allowableConnections.contains(topologyMember.getLive())) if (topologyMember.getLive() == null) createNewRecord(topologyMember.getUniqueEventID(), nodeID, topologyMember.getLive(), queueName, queue, true);
@Override public void nodeUP(TopologyMember topologyMember, boolean last) { boolean isOurNodeId = nodeId != null && nodeId.toString().equals(topologyMember.getNodeId()); if (isOurNodeId) { isNodePresent = true; } if (isOurNodeId || last) { latch.countDown(); } }
public ClientSessionFactory createSessionFactory(String nodeID) throws Exception { TopologyMember topologyMember = topology.getMember(nodeID); if (HornetQClientLogger.LOGGER.isTraceEnabled()) { HornetQClientLogger.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; }