Session.attach could be sent before the connection is open.
-----------------------------------------------------------

                 Key: QPID-3042
                 URL: https://issues.apache.org/jira/browse/QPID-3042
             Project: Qpid
          Issue Type: Bug
          Components: Java Client
    Affects Versions: 0.8, 0.7, 0.6
            Reporter: Rajith Attapattu
            Assignee: Rajith Attapattu
             Fix For: Future


This bug was discovered while investigating QPID-2994
This bug also caused QPID-3033

There exist a race condition where an application could create a new session 
(recreating due to an exception or a completely new session in the midst of 
failover) before the connection is open.
This results in session attach being sent before the connection negotiation is 
completed. All though the connect method and the createSession method in 
Connection.java contends for the same lock, the connect method which acquires 
it early, will releases the lock when it waits (until the connection achieves 
OPEN state) and the createSession method waiting on the lock will get it and 
continue.

Usually this only becomes an issue during failover, as during the initial 
connection creation, the application thread that creates the connection will 
wait until the connect method returns before it creates a session.
However If an application tries to create a connection in one thread and 
several other threads try to create sessions from that connection, and if those 
threads don't coordinate properly to check if the connection is opened, then 
this same race condition is present.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to