While joining nodes to a cluster, an old node crashed. The old node was recovered however clients (datastax java) refused to connect to it.
The driver error:
In the recovered node cassandra logs:
I confirmed that ALL the nodes in the cluster, joining or otherwise, were apache-cassandra-3.11.6 so that error message was rather confusing.
Eventually after digging through the code we got to the bottom of the issue:
https://issues.apache.org/jira/browse/CASSANDRA-15193 adds a check for node version, which reverts the protocol version to V3 if any peer fails the version check. Joining nodes have NULL for their version in the peers table, which fails the version check.