-
Bug
-
Resolution: Duplicate
-
Major
-
8.1.0.Final
-
None
-
None
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.
- causes
-
JBEAP-6051 (7.0.z) ISPN-6857 - OutdatedTopologyException in clustered invalidation cache because StateTransferInterceptor not in the chain
- Closed
- clones
-
ISPN-6857 OutdatedTopologyException in clustered invalidation cache because StateTransferInterceptor not in the chain
- Closed