Uploaded image for project: 'Red Hat Data Grid'
  1. Red Hat Data Grid
  2. JDG-467

NonTxDistributionInterceptor doesn't always change the matcher for retry

    XMLWordPrintable

    Details

      Description

      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.

        Attachments

          Activity

            People

            Assignee:
            dan.berindei Dan Berindei
            Reporter:
            dan.berindei Dan Berindei
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: