Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-5119

[JMS] 3-thread deadlock on pre-AMQP-0-10 connection involving messageDeliveryLock, failover mutex and sessionCreationLock

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.22
    • Fix Version/s: 0.31
    • Component/s: JMS AMQP 0-x
    • Labels:
      None

      Description

      I have run the java systests with the JCarder 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:

      	"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
      

      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.

        Attachments

        1. jcarder_result_4.dot
          1 kB
          Phil Harvey

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                philharveyonline Phil Harvey
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: