Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-8504

View change during cluster listener registration can throw SuspectException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 9.1.3.Final, 9.2.0.Final
    • 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);
        }
      }
      

            wburns@redhat.com Will Burns
            pruivo@redhat.com Pedro Ruivo
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: