[infinispan-issues] [JBoss JIRA] (ISPN-5429) Cluster CacheEventFilterConverter wrapping leads to double callbacks
Galder Zamarreño (JIRA)
issues at jboss.org
Fri May 1 07:13:45 EDT 2015
Galder Zamarreño created ISPN-5429:
--------------------------------------
Summary: Cluster CacheEventFilterConverter wrapping leads to double callbacks
Key: ISPN-5429
URL: https://issues.jboss.org/browse/ISPN-5429
Project: Infinispan
Issue Type: Bug
Components: Listeners
Affects Versions: 7.1.1.Final, 7.2.0.CR1
Reporter: Galder Zamarreño
Assignee: Galder Zamarreño
Fix For: 7.2.0.Final
This was spotted by Pierre Sutra from University of Neuchatel:
When a CacheEventFilterConverter is registered with remote event listeners, and running in a cluster, once the CacheEventFilterConverter instance is replicated, the notion that its both a filter AND converter is lost because BaseCacheEntryListenerInvocation's constructor determines that {{filterAndConvert}} is false.
The reason this happens is because after clustering it, the ClusterListenerReplicateCallable.call() wraps the {{filter}} into an {{AbstractCacheEventFilterConverter}} implementation, which does not keep the referential equality that BaseCacheEntryListenerInvocation's constructor checks.
A simple way to avoid this is to implement {{equals}} in the AbstractCacheEventFilterConverter implementation and use referential equality. Then, switching BaseCacheEntryListenerInvocation's constructors referential equality by a call to {{equals}} is enough to solve the issue.
The reason this bug was detected is because without a fix for it, the filter + converter gets two callbacks instead of one. I've added tests to verify that the number callbacks expected is the correct one.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
More information about the infinispan-issues
mailing list