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
}
        if (timeoutHandler != null) {
            timeoutHandler.cancel();
        }
        
        
        
        final SendRequestTransportException sendRequestException = new SendRequestTransportException(node, action, failure);
        final String executor = lifecycle.stoppedOrClosed() ? ThreadPool.Names.SAME : ThreadPool.Names.GENERIC;
        threadPool.executor(executor).execute(new AbstractRunnable() {
            @Override
            public void onRejection(Exception e) {
                
                logger.debug(() -> format("failed to notify response handler on rejection, action: %s", contextToNotify.action()), e);
            }
            @Override
            public void onFailure(Exception e) {
                logger.warn(() -> format("failed to notify response handler on exception, action: %s", contextToNotify.action()), e);
            }
            @Override
            protected void doRun() {
                contextToNotify.handler().handleException(sendRequestException);
            }
        });
    }
    private void sendLocalRequest(long requestId, final String action, final TransportRequest request, TransportRequestOptions options) {
        final DirectResponseChannel channel = new DirectResponseChannel(localNode, action, requestId, this, threadPool);
        try {
            onRequestSent(localNode, requestId, action, request, options);
            onRequestReceived(requestId, action);