Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-6792

NonTxDistributionInterceptor doesn't always change the matcher for retry


      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.

            dberinde@redhat.com Dan Berindei (Inactive)
            dberinde@redhat.com Dan Berindei (Inactive)
            0 Vote for this issue
            1 Start watching this issue