hanfeng created QPID-7835:
-----------------------------

             Summary: dead lock error
                 Key: QPID-7835
                 URL: https://issues.apache.org/jira/browse/QPID-7835
             Project: Qpid
          Issue Type: Bug
          Components: Java Client
    Affects Versions: qpid-java-6.1.3
            Reporter: hanfeng


When the message server links over time, a message is sent, the caller to 
perceive the message send timeout, take the initiative to close the session, at 
the same time links are perceived to request timeout to shut down connection, 
re link the message server.
When the link function of doClose to get off the lock _failoverMutex, but did 
not get a specific lock _messageDeliveryLock to close the session, close the 
session function close to get to the _messageDeliveryLock _failoverMutex lock, 
lock wait for link
Deadlock.
Modification method.
In session's close function, add a judgment that you are closing session.

  public void close(long timeout) throws JMSException
        {
        {color:red}     if (super.isClosing()) return ;{color}
        setClosing(true);
        lockMessageDelivery();
        try
        {
            // We must close down all producers and consumers in an orderly 
fashion. This is the only method
            // that can be called from a different thread of control from the 
one controlling the session.
            synchronized (getFailoverMutex())
            {
                close(timeout, true);
            }
        }
        finally
        {
            unlockMessageDelivery();
        }
    }



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to