[infinispan-issues] [JBoss JIRA] (ISPN-7075) [8.1.x] : OutdatedTopologyException in clustered invalidation cache because StateTransferInterceptor not in the chain

Panagiotis Sotiropoulos (JIRA) issues at jboss.org
Wed Oct 5 04:33:01 EDT 2016


Panagiotis Sotiropoulos created ISPN-7075:
---------------------------------------------

             Summary: [8.1.x] : OutdatedTopologyException in clustered invalidation cache because StateTransferInterceptor not in the chain
                 Key: ISPN-7075
                 URL: https://issues.jboss.org/browse/ISPN-7075
             Project: Infinispan
          Issue Type: Bug
    Affects Versions: 8.1.0.Final
            Reporter: Panagiotis Sotiropoulos
            Assignee: Dan Berindei
             Fix For: 9.0.0.Final, 8.2.5.Final


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:

{code}
invalidationConfigBuilder.customInterceptors()
    .addInterceptor()
    .before(NonTransactionalLockingInterceptor.class)
    .interceptorClass(StateTransferInterceptor.class);
{code}
 
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.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the infinispan-issues mailing list