]
Pedro Ruivo updated ISPN-8504:
------------------------------
Git Pull Request:
View change during cluster listener registration can throw
SuspectException
---------------------------------------------------------------------------
Key: ISPN-8504
URL:
https://issues.jboss.org/browse/ISPN-8504
Project: Infinispan
Issue Type: Bug
Reporter: Pedro Ruivo
Assignee: William Burns
Fix For: 9.2.0.Beta1, 9.1.3.Final
when registering a cluster listener, if a view change happens, it tries to register the
listener in the joiner. However, if the joiner doesn't have the cache, a
{{SuspectException}} is thrown.
I noticed also the cluster listener registration uses the view and not the cache members.
In the first iteration, the {{SuspectException}} is ignored:
Line 872:
{code:java}
for (int i = 0; i < members.size() - 1; ++i) {
try {
decs.take().get();
} catch (InterruptedException e) {
throw new CacheListenerException(e);
} catch (ExecutionException e) {
Throwable cause = e.getCause();
// If we got a SuspectException it means the remote node hasn't started this
cache yet.
// Just ignore, when it joins it will retrieve the listener
if (!(cause instanceof SuspectException)) {
throw new CacheListenerException(cause);
}
}
}
{code}
However, when trying in the joiners, the exception isn't ignored:
Line 902
{code:java}
for (int i = 0; i < extraCount; ++i) {
try {
decs.take().get();
} catch (InterruptedException e) {
throw new CacheListenerException(e);
} catch (ExecutionException e) {
throw new CacheListenerException(e);
}
}
{code}