qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Keith Wall (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (QPID-3498) Broker race condition means that it tries to respond before IoSender thread is running
Date Wed, 21 Sep 2011 15:41:09 GMT

     [ https://issues.apache.org/jira/browse/QPID-3498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Keith Wall updated QPID-3498:
-----------------------------

    Summary: Broker race condition means that it tries to respond before IoSender thread is
running  (was: Broker race condition mean that it tries to respond before IoSender thread
is running)

> Broker race condition means that it tries to respond before IoSender thread is running
> --------------------------------------------------------------------------------------
>
>                 Key: QPID-3498
>                 URL: https://issues.apache.org/jira/browse/QPID-3498
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>            Reporter: Keith Wall
>            Assignee: Keith Wall
>             Fix For: 0.13
>
>
> Since the removal of Mina from the transport layer, we've been seeing sporadic failures
from the java-mms-spawn.0-9-1 profile on an old slow CI server.
> Tests are failing with the following exception whilst the client is attempting to negotiate
downwards from 0-10 to 0-9-1 protocol during connection:
> {code}
> main 2011-09-21 14:27:09,139 INFO [apache.qpid.client.AMQConnection] Unable to connect
to broker at tcp://localhost:15672
> org.apache.qpid.AMQException: Cannot connect to broker: connect() aborted [error code
200: reply success]
>         at org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:218)
>         at org.apache.qpid.client.AMQConnection.makeBrokerConnection(AMQConnection.java:565)
>         at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:351)
>         at org.apache.qpid.client.AMQConnectionFactory.createConnection(AMQConnectionFactory.java:132)
>         at org.apache.qpid.client.AMQConnectionFactory.createConnection(AMQConnectionFactory.java:111)
>         at org.apache.qpid.test.utils.QpidBrokerTestCase.getConnection(QpidBrokerTestCase.java:1056)
>         at org.apache.qpid.test.unit.basic.LargeMessageTest.setUp(LargeMessageTest.java:52)
>         at junit.framework.TestCase.runBare(TestCase.java:125)
>         at org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:238)
>         at junit.framework.TestResult$1.protect(TestResult.java:106)
>         at junit.framework.TestResult.runProtected(TestResult.java:124)
> {code}
> Analysis has shown that when the problem occurs, the broker tries to write the highest
supported protocol version number to the wire, but these bytes never make it to the wire (see
MultiVersionProtocolEngine#received() lines 409-414).   The reason for this is a race condition:
there is an unlucky timing where the broker may begin responding to incoming frames *before*
it has started the IoSender thread. 

--
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:dev-subscribe@qpid.apache.org


Mime
View raw message