ISPN-4198 was fixed, joiners ignore commands that were sent in a topology in which they were not members. But the joiner will still send a null response, which is valid, so the tx originator will not retry the command.
The owner may have already sent the list of transactions to the joiner before the prepare, so this sequence of events can happen:
1. A new topology is installed, which includes the joiner (B) in the write consistent hash. B requests the transactions from A, but doesn't receive anything because the affected keys of GlobalTransaction:<NodeA-40680>:99974:local haven't been updated yet.
2. Node A adds the affected key and sends the prepare command to B with topology 0. B ignores the command.
3. A tries to commit the tx, but B throws an exception because it can't find the remote tx.
This is causing random failures in the map/reduce tests (e.g. DistributedSharedCacheTwoNodesMapReduceTest), because map/reduce doesn't wait for all the nodes to join before inserting in the cache.