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

Two PrepareCommands in parallel cause ConcurrentModificationException

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Blocker
    • Resolution: Done
    • 5.2.0.Beta5
    • 5.2.0.CR2
    • None
    • None

    Description

      Situation:
      1) Node A broadcasts PrepareCommand to nodes B, C
      2) Node A leaves cluster, causing new topology to be installed
      3) The command arrives to B and C, with lower topology than the current one
      4) Both B and C forward the command to node D
      5) D executes the two commands in parallel and finds out that A has left, therefore executing RollbackCommand

      In AbstractTxLockingInterceptor.visitRollbackCommand we call LockManagerImpl.unlockAll which iterates over the keys and unlocks them. As these two prepares aren't synchronized over the lockedKeys set, one may unlock and remove these keys while the other is iterating through them, causing ConcurrentModificationException.

      Attachments

        Activity

          People

            mircea.markus Mircea Markus (Inactive)
            rvansa1@redhat.com Radim Vansa (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: