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
} finally {
            
            
            
            
            for (final Transport.ResponseContext<?> holderToNotify : responseHandlers.prune(h -> true)) {
                try {
                    final TransportResponseHandler<?> handler = holderToNotify.handler();
                    final var targetNode = holderToNotify.connection().getNode();
                    assert transport instanceof TcpTransport == false
                        
                        || targetNode.equals(localNode)
                        
                        || holderToNotify.connection().isClosed()
                        
                        : "expected only responses for local "
                            + localNode
                            + " but found handler for ["
                            + holderToNotify.action()
                            + "] on open connection to "
                            + targetNode;
                    final var exception = new SendRequestTransportException(
                        targetNode,
                        holderToNotify.action(),
                        new NodeClosedException(localNode)
                    );
                    final var executor = handler.executor();
                    if (executor.equals(ThreadPool.Names.SAME)) {
                        handler.handleException(exception);
                    } else {