[
https://issues.apache.org/jira/browse/AMQ-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13224451#comment-13224451
]
Timothy Bish commented on AMQ-3759:
-----------------------------------
The current test fails because the ActiveMQConnectionFactory is waiting for a
response on its socket but the broker is in an loop on onAccept receiving
SSLExceptions because the broker has no SSL configuration. The reason the
method using ActiveMQSSLConnectionFactory fails is because it can locally
detect that its not configured and fail fast. If you configured a timeout on
the ssl transport so that the socket connect call failed after a delay it would
then work similar to the other test case.
> ActiveMQConnectionFactory blocks in case of ssl
> -----------------------------------------------
>
> Key: AMQ-3759
> URL: https://issues.apache.org/jira/browse/AMQ-3759
> Project: ActiveMQ
> Issue Type: Bug
> Components: JMS client
> Affects Versions: 5.4.3, 5.5.1
> Reporter: Krzysztof Olszewski
> Attachments: ConnectionFactoryTest.java,
> ConnectionFactoryWithSslContextTest.java
>
>
> When ActiveMQConnectionFactory is used to create connection to broker using
> SSL the thread becomes blocked (waiting infinite on
> SocketInputStream#socketRead0).
> Stacktrace:
> "ActiveMQ Transport: ssl://localhost/127.0.0.1:9099" prio=6
> tid=0x0000000006105000 nid=0x463c waiting for monitor entry
> [0x0000000008a2f000]
> java.lang.Thread.State: BLOCKED (on object monitor)
> at
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown
> Source)
> - waiting to lock <0x000000078219d8f8> (a java.lang.Object)
> at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown
> Source)
> at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
> - locked <0x000000078219d9d0> (a
> com.sun.net.ssl.internal.ssl.AppInputStream)
> at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)
> at
> org.apache.activemq.transport.tcp.TcpTransport$2.fill(TcpTransport.java:576)
> at
> org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)
> at
> org.apache.activemq.transport.tcp.TcpTransport$2.read(TcpTransport.java:561)
> at java.io.DataInputStream.readInt(Unknown Source)
> at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
> at
> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:227)
> at
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:219)
> at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202)
> at java.lang.Thread.run(Unknown Source)
> "Thread-4" prio=6 tid=0x0000000006103800 nid=0x2bb8 runnable
> [0x000000000872e000]
> java.lang.Thread.State: RUNNABLE
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.read(Unknown Source)
> at com.sun.net.ssl.internal.ssl.InputRecord.readFully(Unknown Source)
> at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
> at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
> - locked <0x00000007821b14c8> (a java.lang.Object)
> at
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown
> Source)
> - locked <0x000000078219d8f8> (a java.lang.Object)
> at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown
> Source)
> at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
> - locked <0x00000007821a2a60> (a
> com.sun.net.ssl.internal.ssl.AppOutputStream)
> at
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
> at java.io.DataOutputStream.flush(Unknown Source)
> at
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:182)
> at
> org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:254)
> - locked <0x00000007821a2898> (a
> java.util.concurrent.atomic.AtomicBoolean)
> at
> org.apache.activemq.transport.WireFormatNegotiator.sendWireFormat(WireFormatNegotiator.java:168)
> at
> org.apache.activemq.transport.WireFormatNegotiator.sendWireFormat(WireFormatNegotiator.java:84)
> at
> org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:74)
> at
> org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
> at
> org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:58)
> at
> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:266)
> at
> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:230)
> at
> org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:178)
> at
> org.apache.activemq.broker.test.SslDeadlockTest.sendMsg(SslDeadlockTest.java:53)
> at
> org.apache.activemq.broker.test.SslDeadlockTest.testFail(SslDeadlockTest.java:41)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> at
> org.junit.internal.runners.statements.FailOnTimeout$1.run(FailOnTimeout.java:28)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira