You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2017/08/11 12:26:02 UTC

[jira] [Resolved] (AMQ-6792) masterslave: transport blocked socket write can block network bridge stop in error

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

Gary Tully resolved AMQ-6792.
-----------------------------
    Resolution: Fixed

> 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.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)