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
+ response.clusterName.value()
                                + "] does not match "
                                + clusterNamePredicate
                        )
                    );
                } else if (response.version.isCompatible(localNode.getVersion()) == false) {
                    l.onFailure(
                        new IllegalStateException(
                            "handshake with ["
                                + node
                                + "] failed: remote node version ["
                                + response.version
                                + "] is incompatible with local node version ["
                                + localNode.getVersion()
                                + "]"
                        )
                    );
                } else {
                    l.onResponse(response);
                }
            }), HandshakeResponse::new, ThreadPool.Names.GENERIC)
        );
    }
    public ConnectionManager getConnectionManager() {
        return connectionManager;
    }
    public RecyclerBytesStreamOutput newNetworkBytesStream() {
        return transport.newNetworkBytesStream();
    }
    static class HandshakeRequest extends TransportRequest {