public TopologyMemberImpl(String nodeId, final String backupGroupName, final String scaleDownGroupName, final TransportConfiguration a, final TransportConfiguration b) { this.nodeId = nodeId; this.backupGroupName = backupGroupName; this.scaleDownGroupName = scaleDownGroupName; this.connector = new Pair<>(a, b); uniqueEventID = System.currentTimeMillis(); }
public void setLive(final TransportConfiguration param) { connector.setA(param); }
private void internalUpdateArray(long time) { synchronized (topologyArrayGuard) { Collection<TopologyMemberImpl> membersCopy = topology.getMembers(); Pair<TransportConfiguration, TransportConfiguration>[] topologyArrayLocal = (Pair<TransportConfiguration, TransportConfiguration>[]) Array.newInstance(Pair.class, membersCopy.size()); int count = 0; for (TopologyMemberImpl pair : membersCopy) { Pair<TransportConfiguration, TransportConfiguration> transportConfigs = pair.getConnector(); topologyArrayLocal[count++] = new Pair<>(protocolManagerFactory.adaptTransportConfiguration(transportConfigs.getA()), protocolManagerFactory.adaptTransportConfiguration(transportConfigs.getB())); } this.topologyArray = topologyArrayLocal; } }
@Override public void deleteFromCache(byte[] duplicateID) throws Exception { if (logger.isTraceEnabled()) { logger.trace("DuplicateIDCacheImpl::deleteFromCache deleting id=" + describeID(duplicateID, 0)); } ByteArrayHolder bah = new ByteArrayHolder(duplicateID); Integer posUsed = cache.remove(bah); if (posUsed != null) { Pair<ByteArrayHolder, Long> id; synchronized (this) { id = ids.get(posUsed.intValue()); if (id.getA().equals(bah)) { id.setA(null); storageManager.deleteDuplicateID(id.getB()); if (logger.isTraceEnabled()) { logger.trace("DuplicateIDCacheImpl(" + this.address + ")::deleteFromCache deleting id=" + describeID(duplicateID, id.getB())); } id.setB(null); } } } }
@Override public TransportConfiguration getLive() { return connector.getA(); }
@Override public TransportConfiguration getBackup() { return connector.getB(); }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (exit ? 1231 : 1237); result = prime * result + (last ? 1231 : 1237); result = prime * result + ((nodeID == null) ? 0 : nodeID.hashCode()); result = prime * result + ((pair == null) ? 0 : pair.hashCode()); return result; }
public void setBackup(final TransportConfiguration param) { connector.setB(param); }
return false; } else if (!pair.equals(other.pair)) { return false;
if (id.getA() != null) { if (logger.isTraceEnabled()) { logger.trace("DuplicateIDCacheImpl(" + this.address + ")::addToCacheInMemory removing excess duplicateDetection " + describeID(id.getA().bytes, id.getB())); cache.remove(id.getA()); if (id.getB() != null) { try { storageManager.deleteDuplicateID(id.getB()); } catch (Exception e) { ActiveMQServerLogger.LOGGER.errorDeletingDuplicateCache(e); id.setA(holder); id.setB(recordID >= 0 ? recordID : null); logger.trace("DuplicateIDCacheImpl(" + this.address + ")::addToCacheInMemory replacing old duplicateID by " + describeID(id.getA().bytes, id.getB())); id = new Pair<>(holder, recordID >= 0 ? recordID : null); logger.trace("DuplicateIDCacheImpl(" + this.address + ")::addToCacheInMemory Adding new duplicateID " + describeID(id.getA().bytes, id.getB()));
@Override public void notifyNodeUp(long uniqueEventID, String nodeID, String backupGroupName, String scaleDownGroupName, Pair<TransportConfiguration, TransportConfiguration> connectorPair, boolean isLast) { try { // if it is our connector then set the live id used for failover if (connectorPair.getA() != null && TransportConfigurationUtil.isSameHost(connectorPair.getA(), currentConnectorConfig)) { liveNodeID = nodeID; } serverLocator.notifyNodeUp(uniqueEventID, nodeID, backupGroupName, scaleDownGroupName, connectorPair, isLast); } finally { if (isLast) { latchFinalTopology.countDown(); } } }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (exit ? 1231 : 1237); result = prime * result + (last ? 1231 : 1237); result = prime * result + ((nodeID == null) ? 0 : nodeID.hashCode()); result = prime * result + ((pair == null) ? 0 : pair.hashCode()); return result; }
public void setBackup(final TransportConfiguration param) { connector.setB(param); }
return false; } else if (!pair.equals(other.pair)) { return false;
/** * We only need to check if the connection point to the same node, * don't need to compare the whole params map. * @param connection The connection to the target node * @return true if the connection point to the same node * as this member represents. */ @Override public boolean isMember(RemotingConnection connection) { return connection.isSameTarget(getConnector().getA(), getConnector().getB()); }