Philip Harvey created QPID-5119:
-----------------------------------

             Summary: Java client - 3-thread deadlock on pre-AMQP-0-10 
connection involving messageDeliveryLock, failover mutex and sessionCreationLock
                 Key: QPID-5119
                 URL: https://issues.apache.org/jira/browse/QPID-5119
             Project: Qpid
          Issue Type: Bug
          Components: Java Client
    Affects Versions: 0.22
            Reporter: Philip Harvey


I have run the java systests with the [JCarder|http://jcarder.org/] agent 
attached. When using AMQP 0-9, JCarder detected a potential deadlock when the 
following are done concurrently:

* Close a consumer from an application thread. 
* Call Connection.createSession from an application thread.
* Call Connection.createSession inside MessageListener.onMessage(). 


Here is a sketch of the deadlock scenario:

{noformat}
        "Dispatcher-1-Conn-780"
                AMQSession$Dispatcher.dispatchMessage()
                        lock AMQSession.this._messageDeliveryLock
                        AMQConnection.createSession()
                                lock AMQConnection._sessionCreationLock BLOCKED 
BY applicationThread1
        "applicationThread1"
                AMQConnection.createSession
                        lock AMQConnection._sessionCreationLock
                        ...
                                AMQConnectionDelegate_8_0.executeRetrySupport
                                        lock AMQConnection.getFailoverMutex() 
BLOCKED BY applicationThread2
        "applicationThread2"
                BasicMessageConsumer.close()
                        lock AMQSession.getFailoverMutex()
                        lock AMQSession._messageDeliveryLock BLOCKED BY 
Dispatcher-1-Conn-780
{noformat}
 
Interestingly, AMQConnectionDelegate_0_10.executeRetrySupport(..) does not 
acquire the failover mutex (I have no idea if it _should_) so is not 
susceptible to this deadlock.

I've attached the GraphViz .dot file that JCarder generated when it detected 
this problem.

Note that this problem is similar to QPID-4574 and QPID-5118 so might be fixed 
by a single commit.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to