Currently the retry logic for commands is to only throw a OutdatedTopologyException when a command is successful. This however can have the following issue. k1 owned by N1, N2 1. N3 updates k1 sending conditional command to N1 2. N1 receives command and starts running it (passes topology block) 3. ST occurs causing N1 to no longer be an owner and removes k1 from it's data container. 4. N1 runs optional command and it fails and thus doesn't throw OutdatedTopologyException 5. N3 gets response that command failed, but it could have worked had it gone to a real owner.
PR: https://github.com/infinispan/jdg/pull/303