There's currently a check in `TransportService.HandshakeResponse.isIncompatibleBuild` to stop ES with the same Version but different build hashes from joining a cluster. This needs to be relaxed for cloud deployments where Version is not applicable
server/src/main/java/org/elasticsearch/transport/TransportService.java
}
        private static boolean isIncompatibleBuild(Version version, String buildHash) {
            return version == Version.CURRENT && Build.CURRENT.hash().equals(buildHash) == false;
        }
    }
    public void disconnectFromNode(DiscoveryNode node) {
        if (isLocalNode(node)) {
            return;
        }
        connectionManager.disconnectFromNode(node);
    }
    public void addMessageListener(TransportMessageListener listener) {
        messageListener.listeners.add(listener);
    }
    public void removeMessageListener(TransportMessageListener listener) {
        messageListener.listeners.remove(listener);
    }
    public void addConnectionListener(TransportConnectionListener listener) {
        connectionManager.addListener(listener);
    }
    public void removeConnectionListener(TransportConnectionListener listener) {
        connectionManager.removeListener(listener);
    }
    public <T extends TransportResponse> void sendRequest(
        final DiscoveryNode node,
        final String action,
        final TransportRequest request,
        final TransportResponseHandler<T> handler
    ) {
        sendRequest(node, action, request, TransportRequestOptions.EMPTY, handler);