[ 
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]

Reply via email to