-
Bug
-
Resolution: Done
-
Major
-
8.2.2.Final, 9.0.0.Final
When invoking a non-transactional write command remotely, BaseDistributionInterceptor expects to receive an OutdatedTopologyException wrapped in a RemoteException if the remote node saw a newer cache topology.
However, OutdatedTopologyException is handled differently by JGroupsTransport, and it is not wrapped in a RemoteException. Because of this, BaseDistributionInterceptor doesn't update the value matcher, and the retried command may fail when it sees its own value.
This makes NonTxPutIfAbsentDuringLeaveStressTest fail randomly with
java.lang.AssertionError: expected:<null> but was:<value_7_0> at org.testng.AssertJUnit.fail(AssertJUnit.java:59) at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364) at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80) at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:88) at org.infinispan.distribution.rehash.NonTxPutIfAbsentDuringLeaveStressTest.testNodeLeavingDuringPutIfAbsent(NonTxPutIfAbsentDuringLeaveStressTest.java:101)
Note that this is different from ISPN-6451: there, the assertion message is AssertionError: expected:<value_48_1> but was:<null>, and it is most likely caused by ISPN-3918.