Broker race condition mean 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:[email protected]