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

[8.1.x] : OutdatedTopologyException in clustered invalidation cache because StateTransferInterceptor not in the chain

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • 8.2.5.Final, 9.0.0.Final
    • 8.1.0.Final
    • None
    • None

    Description

      I have the following setup:

      • 2 nodes in cluster with mode INVALIDATION_SYNC. No-transaction cache.
      • Node1 is started
      • Called "cache.remove" on some key on node1. At the same time, node2 is starting, which is causing topology change.
      • The "cache.remove" call on node1 is throwing OutdatedTopologyException.

      I found the cause is that StateTransferInterceptor is not added in InterceptorChain during INVALIDATION mode. It's just available during REPLICATION or DISTRIBUTED modes - https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/factories/InterceptorChainFactory.java#L158

      Indeed when I manually added StateTransferInterceptor to my invalidation cache:

      invalidationConfigBuilder.customInterceptors()
          .addInterceptor()
          .before(NonTransactionalLockingInterceptor.class)
          .interceptorClass(StateTransferInterceptor.class);
      

      I can see that issue is gone as OutdatedTopologyException is catched and command is retried with new topology.

      I am attaching the Java unit test for reproducing issue. On my laptop when I run it, I can almost always simulate the issue.

      Attachments

        Issue Links

          Activity

            People

              psotirop@redhat.com Panagiotis Sotiropoulos
              psotirop@redhat.com Panagiotis Sotiropoulos
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: