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

KeyAffinityService race condition on view change

XMLWordPrintable

    KeyAffinityService#getKeyForAddress runs in a tight loop looking for keys:

        queue = address2key.get(address)
        while (result == null)
            result = queue.poll()
    

    KeyAffinityService#handleViewChange clears and resets the queue list on membership change:

        address2key.clear()
        for each address
            map.put(address, new queue)
    

    If a view change comes in after getKeyForAddress gets the queue, and the queue is empty, it will get stuck in a tight loop looking at the wrong queue forever while new keys are added to the new queue.

          rhn-cservice-bbaranow Bartosz Baranowski
          rhn-support-dereed Dennis Reed
          Votes:
          0 Vote for this issue
          Watchers:
          4 Start watching this issue

            Created:
            Updated:
            Resolved: