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

Timothy Bish updated AMQ-6792:
------------------------------
    Fix Version/s: 5.15.1

> masterslave: transport blocked socket write can block network bridge stop in 
> error
> ----------------------------------------------------------------------------------
>
>                 Key: AMQ-6792
>                 URL: https://issues.apache.org/jira/browse/AMQ-6792
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: networkbridge
>    Affects Versions: 5.15.0
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.15.1, 5.16.0
>
>
> With a blocked socket write, the failover (use for masterslave) transport 
> holds the reconnect mutex. this blocks normal stop pending the completion of 
> the write. If the write blocks and there is no timeout exception, the 
> transport stays up in error even when stop is called on the network bridge 
> which can block broker shutdown.
> Threads:
> {code}"ActiveMQ BrokerService[amq10] Task-147" - Thread t@45016
>    java.lang.Thread.State: RUNNABLE
>       at java.net.SocketOutputStream.socketWrite0(Native Method)
>       at 
> java.net.SocketOutputStream.__AW_socketWrite(SocketOutputStream.java:111)
>       at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java)
>       at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
>       at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:431)
>       at sun.security.ssl.OutputRecord.write(OutputRecord.java:417)
>       at 
> sun.security.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:886)
>       at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:857)
>       at sun.security.ssl.AppOutputStream.__AW_write(AppOutputStream.java:123)
>       - locked <5ce0bde7> (a sun.security.ssl.AppOutputStream)
>       at sun.security.ssl.AppOutputStream.write(AppOutputStream.java)
>       at 
> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBufferedOutputStream.java:115)
>       at java.io.DataOutputStream.flush(DataOutputStream.java:123)
>       at 
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:176)
>       at 
> org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:335)
>       at 
> org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:317)
>       at 
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
>       at 
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
>       at 
> org.apache.activemq.transport.failover.FailoverTransport.__AW_oneway(FailoverTransport.java:667)
>       - locked <47e37945> (a java.lang.Object)
>       at 
> org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java)
>       at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
>       at 
> org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
>       at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:1008)
>       at 
> org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:207)
>       at 
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
>       at 
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
>       at 
> org.apache.activemq.transport.vm.VMTransport.doDispatch(VMTransport.java:162)
>       at 
> org.apache.activemq.transport.vm.VMTransport.dispatch(VMTransport.java:154)
>       - locked <467f411f> (a java.util.concurrent.atomic.AtomicBoolean)
>       at 
> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:131)
>       at 
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
>       at 
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
>       at 
> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1457)
>       at 
> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:971)
>       at 
> org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:1017)
>       at 
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
>       at 
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748){code}
> {code}"IOExceptionHandler: stopping BrokerService[amq10]" - Thread t@201006
>    java.lang.Thread.State: BLOCKED
>       at 
> org.apache.activemq.transport.failover.FailoverTransport.__AW_stop(FailoverTransport.java:380)
>       - waiting to lock <47e37945> (a java.lang.Object) owned by "ActiveMQ 
> BrokerService[amq10] Task-147" t@45016
>       at 
> org.apache.activemq.transport.failover.FailoverTransport.stop(FailoverTransport.java)
>       at 
> org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:65)
>       at 
> org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:65)
>       at 
> org.apache.activemq.transport.ResponseCorrelator.stop(ResponseCorrelator.java:132)
>       at org.apache.activemq.util.ServiceStopper.stop(ServiceStopper.java:41)
>       at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.__AW_stop(DemandForwardingBridgeSupport.java:307)
>       at 
> org.apache.activemq.network.DemandForwardingBridgeSupport.stop(DemandForwardingBridgeSupport.java)
>       at 
> org.apache.activemq.network.DiscoveryNetworkConnector.handleStop(DiscoveryNetworkConnector.java:223)
>       at 
> org.apache.activemq.network.NetworkConnector$1.doStop(NetworkConnector.java:65)
>       at 
> org.apache.activemq.util.ServiceSupport.__AW_stop(ServiceSupport.java:71)
>       at org.apache.activemq.util.ServiceSupport.stop(ServiceSupport.java)
>       at 
> org.apache.activemq.network.NetworkConnector.stop(NetworkConnector.java:165)
>       at org.apache.activemq.util.ServiceStopper.stop(ServiceStopper.java:41)
>       at 
> org.apache.activemq.broker.BrokerService.__AW_stopAllConnectors(BrokerService.java:2191)
>       at 
> org.apache.activemq.broker.BrokerService.stopAllConnectors(BrokerService.java)
>       at 
> org.apache.activemq.broker.BrokerService.__AW_stop(BrokerService.java:805)
>       at org.apache.activemq.broker.BrokerService.stop(BrokerService.java)
>       at 
> org.apache.activemq.xbean.XBeanBrokerService.stop(XBeanBrokerService.java:122)
>       at 
> org.apache.activemq.util.DefaultIOExceptionHandler$2.run(DefaultIOExceptionHandler.java:181){code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to