-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
None
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:
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); } } }
However, when trying in the joiners, the exception isn't ignored:
Line 902
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); } }