I've attached the logs for NodeC (the coordinator) and NodeD (the joiner). Everything is run locally so the clocks in the logs are correct.
As far as I understand, GMS sends the view change event but FD_SOCK2 blocks it because it is trying to find the correct port where NodeD is listening. After FD_SOCK2 successful connection, the JOIN_RSP is sent but it is discarded by NodeD since it already created a view with just himself.
My suggestion would be to offload the FD_SOCK2 connection attempts to a different thread since it has to try multiple ports.
Also, it looks like there is NullPointerException [org.jgroups.protocols.FD_SOCK2] IracStateTransferTest-NodeC: failed connecting to 127.0.0.1:55002: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "org.jgroups.util.Promise.getResult(long)" is null
Here: returning void here should fix the NPE void