@Override public NodeIdentifier getPrimaryNode() { final String primaryNodeAddress = leaderElectionManager.getLeader(ClusterRoles.PRIMARY_NODE); if (primaryNodeAddress == null) { return null; } return nodeStatuses.keySet().stream() .filter(nodeId -> primaryNodeAddress.equals(nodeId.getSocketAddress() + ":" + nodeId.getSocketPort())) .findFirst() .orElse(null); }
private Set<String> getRoles(final NodeIdentifier nodeId) { final Set<String> roles = new HashSet<>(); final String nodeAddress = nodeId.getSocketAddress() + ":" + nodeId.getSocketPort(); for (final String roleName : ClusterRoles.getAllRoles()) { final String leader = leaderElectionManager.getLeader(roleName); if (leader == null) { continue; } if (leader.equals(nodeAddress)) { roles.add(roleName); } } return roles; }
private Socket createSocket(final NodeIdentifier nodeId, final boolean applyHandshakeTimeout) { return createSocket(nodeId.getSocketAddress(), nodeId.getSocketPort(), applyHandshakeTimeout); }
.filter(nodeId -> nodeId.getSocketAddress().equals(electedNodeHostname) && nodeId.getSocketPort() == electedNodePort) .findFirst() .orElse(null);
private NodeIdentifier resolveNodeId(final NodeIdentifier proposedIdentifier) { final NodeConnectionStatus proposedConnectionStatus = new NodeConnectionStatus(proposedIdentifier, DisconnectionCode.NOT_YET_CONNECTED); final NodeConnectionStatus existingStatus = nodeStatuses.putIfAbsent(proposedIdentifier, proposedConnectionStatus); NodeIdentifier resolvedNodeId = proposedIdentifier; if (existingStatus == null) { // there is no node with that ID resolvedNodeId = proposedIdentifier; logger.debug("No existing node with ID {}; resolved node ID is as-proposed", proposedIdentifier.getFullDescription()); onNodeAdded(resolvedNodeId, true); } else if (existingStatus.getNodeIdentifier().logicallyEquals(proposedIdentifier)) { // there is a node with that ID but it's the same node. resolvedNodeId = proposedIdentifier; logger.debug("A node already exists with ID {} and is logically equivalent; resolved node ID is as-proposed: {}", proposedIdentifier.getId(), proposedIdentifier.getFullDescription()); } else { // there is a node with that ID and it's a different node resolvedNodeId = new NodeIdentifier(UUID.randomUUID().toString(), proposedIdentifier.getApiAddress(), proposedIdentifier.getApiPort(), proposedIdentifier.getSocketAddress(), proposedIdentifier.getSocketPort(), proposedIdentifier.getLoadBalanceAddress(), proposedIdentifier.getLoadBalancePort(), proposedIdentifier.getSiteToSiteAddress(), proposedIdentifier.getSiteToSitePort(), proposedIdentifier.getSiteToSiteHttpApiPort(), proposedIdentifier.isSiteToSiteSecure()); logger.debug("A node already exists with ID {}. Proposed Node Identifier was {}; existing Node Identifier is {}; Resolved Node Identifier is {}", proposedIdentifier.getId(), proposedIdentifier.getFullDescription(), getNodeIdentifier(proposedIdentifier.getId()).getFullDescription(), resolvedNodeId.getFullDescription()); } return resolvedNodeId; }
private NodeIdentifier addNodeIdentities(final NodeIdentifier nodeId, final Set<String> nodeIdentities) { return new NodeIdentifier(nodeId.getId(), nodeId.getApiAddress(), nodeId.getApiPort(), nodeId.getSocketAddress(), nodeId.getSocketPort(), nodeId.getLoadBalanceAddress(), nodeId.getLoadBalancePort(), nodeId.getSiteToSiteAddress(), nodeId.getSiteToSitePort(), nodeId.getSiteToSiteHttpApiPort(), nodeId.isSiteToSiteSecure(), nodeIdentities); }
@Override public AdaptedNodeIdentifier marshal(final NodeIdentifier ni) { if (ni == null) { return null; } else { final AdaptedNodeIdentifier aNi = new AdaptedNodeIdentifier(); aNi.setId(ni.getId()); aNi.setApiAddress(ni.getApiAddress()); aNi.setApiPort(ni.getApiPort()); aNi.setSocketAddress(ni.getSocketAddress()); aNi.setSocketPort(ni.getSocketPort()); aNi.setLoadBalanceAddress(ni.getLoadBalanceAddress()); aNi.setLoadBalancePort(ni.getLoadBalancePort()); aNi.setSiteToSiteAddress(ni.getSiteToSiteAddress()); aNi.setSiteToSitePort(ni.getSiteToSitePort()); aNi.setSiteToSiteHttpApiPort(ni.getSiteToSiteHttpApiPort()); aNi.setSiteToSiteSecure(ni.isSiteToSiteSecure()); return aNi; } }
public static NodeIdentifierDescriptor fromNodeIdentifier(final NodeIdentifier nodeId, final boolean localNodeId) { final NodeIdentifierDescriptor descriptor = new NodeIdentifierDescriptor(); descriptor.setId(nodeId.getId()); descriptor.setApiAddress(nodeId.getApiAddress()); descriptor.setApiPort(nodeId.getApiPort()); descriptor.setSocketAddress(nodeId.getSocketAddress()); descriptor.setSocketPort(nodeId.getSocketPort()); descriptor.setSiteToSiteAddress(nodeId.getSiteToSiteAddress()); descriptor.setSiteToSitePort(nodeId.getSiteToSitePort()); descriptor.setSiteToSiteHttpApiPort(nodeId.getSiteToSiteHttpApiPort()); descriptor.setSiteToSiteSecure(nodeId.isSiteToSiteSecure()); descriptor.setNodeIdentities(nodeId.getNodeIdentities()); descriptor.setLoadBalanceAddress(nodeId.getLoadBalanceAddress()); descriptor.setLoadBalancePort(nodeId.getLoadBalancePort()); descriptor.setLocalNodeIdentifier(localNodeId); return descriptor; }
if (clusterCoordinator.isBlockedByFirewall(Collections.singleton(nodeId.getSocketAddress()))) { clusterCoordinator.reportEvent(nodeId, Severity.WARNING, "Firewall blocked received heartbeat. Issuing disconnection request.");
private Socket createSocket(final NodeIdentifier nodeId, final boolean applyHandshakeTimeout) { return createSocket(nodeId.getSocketAddress(), nodeId.getSocketPort(), applyHandshakeTimeout); }
@Override public AdaptedNodeIdentifier marshal(final NodeIdentifier ni) { if (ni == null) { return null; } else { final AdaptedNodeIdentifier aNi = new AdaptedNodeIdentifier(); aNi.setId(ni.getId()); aNi.setApiAddress(ni.getApiAddress()); aNi.setApiPort(ni.getApiPort()); aNi.setSocketAddress(ni.getSocketAddress()); aNi.setSocketPort(ni.getSocketPort()); aNi.setLoadBalanceAddress(ni.getLoadBalanceAddress()); aNi.setLoadBalancePort(ni.getLoadBalancePort()); aNi.setSiteToSiteAddress(ni.getSiteToSiteAddress()); aNi.setSiteToSitePort(ni.getSiteToSitePort()); aNi.setSiteToSiteHttpApiPort(ni.getSiteToSiteHttpApiPort()); aNi.setSiteToSiteSecure(ni.isSiteToSiteSecure()); return aNi; } }