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

IllegalMonitorStateException when prepare/commit sequence happens in diff threads

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • 5.0.0.FINAL
    • 5.0.0.CR8
    • Transactions
    • None

      There's no guarantees at the JGroups level that in a sequence of prepare+commit calls, both will be handled by the same thread as shown in the logs:

      Here's a prepare call:

      2011-07-20 21:01:44,400 2011  TRACE [org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher] (OOB-1,Infinispan-Cluster,NodeB-10116:) 
      Attempting to execute command: PrepareCommand {gtx=GlobalTransaction:<NodeA-32281>:1:local, modifications=[PutKeyValueCommand{key=a, value=value1, 
      flags=null, putIfAbsent=false, lifespanMillis=-1, maxIdleTimeMillis=-1}], onePhaseCommit=false, gtx=GlobalTransaction:<NodeA-32281>:1:local, 
      cacheName='cache1'} [sender=NodeA-32281]
      ...
      2011-07-20 21:01:44,404 2015  TRACE [org.infinispan.util.concurrent.locks.containers.AbstractPerEntryLockContainer] (OOB-1,Infinispan-Cluster,NodeB-
      10116:cache1) Acquired lock java.util.concurrent.locks.ReentrantLock@7cd1a1ab[Locked by thread OOB-1,Infinispan-Cluster,NodeB-10116]

      And the commit:

      2011-07-20 21:01:44,418 2029  TRACE [org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher] (OOB-2,Infinispan-Cluster,NodeB-10116:) 
      Attempting to execute command: CommitCommand {gtx=GlobalTransaction:<NodeA-32281>:1:local, cacheName='cache1'} [sender=NodeA-32281]
      ...
      2011-07-20 21:01:44,423 2034  TRACE [org.infinispan.util.concurrent.locks.containers.AbstractPerEntryLockContainer] (OOB-2,Infinispan-Cluster,NodeB-
      10116:cache1) Unlock lock java.util.concurrent.locks.ReentrantLock@7cd1a1ab[Locked by thread OOB-1,Infinispan-Cluster,NodeB-10116]

      The end result?

      2011-07-20 21:01:44,424 2035  ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (OOB-2,Infinispan-Cluster,NodeB-10116:cache1) ISPN000136: 
      Execution error
      java.lang.IllegalMonitorStateException
      	at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
      	at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
      	at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
      	at org.infinispan.util.concurrent.locks.containers.AbstractPerEntryLockContainer.releaseLock(AbstractPerEntryLockContainer.java:113)
      	at org.infinispan.util.concurrent.locks.LockManagerImpl.unlock(LockManagerImpl.java:113)
      	at org.infinispan.interceptors.LockingInterceptor.cleanupLocks(LockingInterceptor.java:375)
      	at org.infinispan.interceptors.LockingInterceptor.visitCommitCommand(LockingInterceptor.java:98)
      

      Mircea, could you have a look?

            mircea.markus Mircea Markus (Inactive)
            rh-ee-galder Galder Zamarreño
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: