[
https://issues.apache.org/jira/browse/QPID-6350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14297801#comment-14297801
]
ASF subversion and git services commented on QPID-6350:
-------------------------------------------------------
Commit 1655877 from [~k-wall] in branch 'qpid/trunk'
[ https://svn.apache.org/r1655877 ]
QPID-6350: [Java Client] Preserve original connection exception
> [AMQP0-10] Original connection exception lost if Broker closes socket before
> client
> -----------------------------------------------------------------------------------
>
> Key: QPID-6350
> URL: https://issues.apache.org/jira/browse/QPID-6350
> Project: Qpid
> Issue Type: Bug
> Components: Java Client
> Reporter: Keith Wall
> Priority: Minor
> Fix For: 0.31
>
>
> If the JMS Client client encounters an exception whilst interacting with the
> Broker and the Broker shuts down the its socket before the client, the
> original cause of the exception is lost.
> We see this happen sporadically new test
> SSLTest#testSSLConnectionToPlainPortRejected on slow CI boxes.
> {noformat}
> Error Message
> Unexpected exception message : Error creating connection: Connection reset
> Stacktrace
> junit.framework.AssertionFailedError: Unexpected exception message : Error
> creating connection: Connection reset
> at junit.framework.Assert.fail(Assert.java:57)
> at junit.framework.Assert.assertTrue(Assert.java:22)
> at junit.framework.TestCase.assertTrue(TestCase.java:192)
> at
> org.apache.qpid.client.ssl.SSLTest.testSSLConnectionToPlainPortRejected(SSLTest.java:116)
> {noformat}
> From the logs, it can be seen that the original (useful) cause of the
> connection failure is being overwritten, and the less useful "connection
> reset" being returned to the application.
> {noformat}
> 15-01-29 10:36:08,372 ERROR [IoReceiver - localhost/127.0.0.1:15672]
> (ssl.SSLReceiver) - Error caught in SSLReceiver
> javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
> at
> sun.security.ssl.EngineInputRecord.bytesInCompletePacket(EngineInputRecord.java:171)
> at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845)
> at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758)
> at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
> at
> org.apache.qpid.transport.network.security.ssl.SSLReceiver.received(SSLReceiver.java:103)
> at
> org.apache.qpid.transport.network.security.ssl.SSLReceiver.received(SSLReceiver.java:36)
> at
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
> at java.lang.Thread.run(Thread.java:745)
> 2015-01-29 10:36:08,373 DEBUG [IoReceiver - localhost/127.0.0.1:15672]
> (transport.Connection) - exception: Error in SSLReceiver: Unrecognized SSL
> message, plaintext connection? state : OPENING
> 2015-01-29 10:36:08,373 DEBUG [main] (ssl.SSLSender) - Closing SSL connection
> 2015-01-29 10:36:08,373 DEBUG [IoReceiver - localhost/127.0.0.1:15672]
> (transport.Connection) - exception: Connection reset state : OPENING
> 2015-01-29 10:36:08,373 DEBUG [IoReceiver - localhost/127.0.0.1:15672]
> (transport.Connection) - connection closed: conn:af88469
> 2015-01-29 10:36:08,373 INFO [main] (client.AMQConnection) - Unable to
> connect to broker at tcp://localhost:15672?ssl='true'
> org.apache.qpid.AMQException: Cannot connect to broker: Connection reset
> [error code 200: reply success]
> at
> org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:241)
> at
> org.apache.qpid.client.AMQConnection.makeBrokerConnection(AMQConnection.java:645)
> at org.apache.qpid.client.AMQConnection.<init>(AMQConnection.java:425)
> at
> org.apache.qpid.client.AMQConnectionFactory.createConnection(AMQConnectionFactory.java:158)
> at
> org.apache.qpid.client.AMQConnectionFactory.createConnection(AMQConnectionFactory.java:137)
> at
> org.apache.qpid.test.utils.QpidBrokerTestCase.getConnection(QpidBrokerTestCase.java:907)
> at
> org.apache.qpid.client.ssl.SSLTest.testSSLConnectionToPlainPortRejected(SSLTest.java:110)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at junit.framework.TestCase.runTest(TestCase.java:176)
> at junit.framework.TestCase.runBare(TestCase.java:141)
> at
> org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:272)
> at junit.framework.TestResult$1.protect(TestResult.java:122)
> at junit.framework.TestResult.runProtected(TestResult.java:142)
> at junit.framework.TestResult.run(TestResult.java:125)
> at junit.framework.TestCase.run(TestCase.java:129)
> at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:148)
> at junit.framework.TestSuite.runTest(TestSuite.java:255)
> at junit.framework.TestSuite.run(TestSuite.java:250)
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
> at
> org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
> at
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
> at
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
> Caused by: org.apache.qpid.transport.ConnectionException: Connection reset
> at org.apache.qpid.transport.Connection.close(Connection.java:670)
> at org.apache.qpid.transport.Connection.close(Connection.java:616)
> at org.apache.qpid.transport.Connection.connect(Connection.java:273)
> at
> org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:221)
> ... 27 more
> Caused by: org.apache.qpid.transport.ConnectionException: Connection reset
> at org.apache.qpid.transport.Connection.exception(Connection.java:564)
> at
> org.apache.qpid.transport.network.Assembler.exception(Assembler.java:107)
> at
> org.apache.qpid.transport.network.InputHandler.exception(InputHandler.java:209)
> at
> org.apache.qpid.transport.network.security.ssl.SSLReceiver.exception(SSLReceiver.java:72)
> at
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:217)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.net.SocketException: Connection reset
> at java.net.SocketInputStream.read(SocketInputStream.java:196)
> at java.net.SocketInputStream.read(SocketInputStream.java:122)
> at
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:156)
> ... 1 more
> 2015-01-29 10:36:08,374 DEBUG [main] (jms.FailoverPolicy) - All failover
> methods exhausted
> {noformat}
> The 0-10 transport class Connecton should be change to keep the first
> exception and log any subsequent errors.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]