This bug was introduced in 8.0.20. It works fine in 8.0.19.
If you set a value for wsrep_node_address, for instance, if the nodes must talk to each other via a hostname instead of via IP, then an 8.0.20 node cannot serve as a Donor node, even for an 8.0.19 joiner.
1 [Note] [MY-000000] [WSREP] Prepared SST request: xtrabackup-v2|portal-trance-db-1.portal-trance-db-all:4444/xtrabackup_sst//1
0 [Warning] [MY-000000] [Galera] 0.1 (portal-trance-db-2): State transfer to 2.1 (portal-trance-db-1) failed:-125 (Operation canceled)
0 [ERROR] [MY-000000] [Galera] gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():1222: Will never receive state. Need to abort.
Donor SST error:
19 [ERROR] [MY-000000] [WSREP] Invalid sst_request: xtrabackup-v2<nullptr>portal-trance-db-1.portal-trance-db-all:4444/xtrabackup_sst//1<nullptr>
0 [Warning] [MY-000000] [Galera] 0.1 (portal-trance-db-2): State transfer to 2.1 (portal-trance-db-1) failed: -125 (Operation canceled)
I notice a lot of changes in the code from 8.0.19 -> 8.0.20 where 0s and nulls have bee changed to nullptr, so I'm guessing (very much a guess) that this regression is an unwanted side effect of those changes