]
Dan Berindei updated ISPN-6792:
-------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request:
NonTxDistributionInterceptor doesn't always change the matcher
for retry
------------------------------------------------------------------------
Key: ISPN-6792
URL:
https://issues.jboss.org/browse/ISPN-6792
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 9.0.0.Alpha2, 8.2.2.Final
Reporter: Dan Berindei
Assignee: Dan Berindei
Labels: testsuite_stability
Fix For: 9.0.0.Alpha3
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
{noformat}
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)
{noformat}
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.