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: [email protected]
For additional commands, e-mail: [email protected]