You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Edwin Yu (JIRA)" <ji...@apache.org> on 2013/03/08 02:24:13 UTC

[jira] [Comment Edited] (AMQ-2798) Occaional hangs on ensureConnectionInfoSent

    [ https://issues.apache.org/jira/browse/AMQ-2798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13596666#comment-13596666 ] 

Edwin Yu edited comment on AMQ-2798 at 3/8/13 1:23 AM:
-------------------------------------------------------

We encountered the error too.  We're on 5.7.0.  Below is the thread stack of the hanging thread.  It doesn't happen often, but it's there.  We're using the failover uri.

<networkConnector name="perform33" uri="static:(tcp://perform31:61616?keepAlive=true&amp;wireFormat.tightEncodingEnabled=false&amp;wireFormat.cacheEnabled=false,tcp://perform38:61616?keepAlive=true&amp;wireFormat.tightEncodingEnabled=false&amp;wireFormat.cacheEnabled=false)?useExponentialBackOff=false">



Name: defaultQuartzScheduler_Worker-1
State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@3bd8ed5f
Total blocked: 10  Total waited: 10

Stack trace: 
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.util.concurrent.ArrayBlockingQueue.take(Unknown Source)
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1366)
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1481)
   - locked java.lang.Object@4bdacc2e

org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:516)
org.mule.transport.jms.JmsConnector.doStart(JmsConnector.java:626)
org.mule.transport.AbstractConnector$2.onTransition(AbstractConnector.java:459)
org.mule.transport.AbstractConnector$2.onTransition(AbstractConnector.java:454)
org.mule.lifecycle.AbstractLifecycleManager.invokePhase(AbstractLifecycleManager.java:141)
org.mule.transport.ConnectorLifecycleManager.fireStartPhase(ConnectorLifecycleManager.java:63)
org.mule.transport.AbstractConnector.startAfterConnect(AbstractConnector.java:453)
   - locked org.mule.transport.jms.activemq.ActiveMQJmsConnector@20fb07d4

org.mule.transport.AbstractConnector$5.doWork(AbstractConnector.java:1601)
org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:67)
org.mule.transport.AbstractConnector.connect(AbstractConnector.java:1611)
org.mule.transport.AbstractConnector.start(AbstractConnector.java:419)
   - locked org.mule.transport.jms.activemq.ActiveMQJmsConnector@20fb07d4

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:225)
org.mule.lifecycle.RegistryLifecycleManager$RegistryLifecycleCallback.onTransition(RegistryLifecycleManager.java:276)
org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:155)
org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:126)
org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:80)
org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:121)
org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:94)
org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:90)
org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:72)
org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:64)
org.mule.DefaultMuleContext.start(DefaultMuleContext.java:202)
   - locked org.mule.DefaultMuleContext@13aaf18f

                
      was (Author: windeyu):
    We encountered the error too.  We're on 5.7.0.  Below is the thread stack of the hanging thread.  It doesn't happen often, but it's there.  We're using the failover uri.

<networkConnector name="perform33" uri="static:(tcp://perform31:61616?keepAlive=true&amp;wireFormat.tightEncodingEnabled=false&amp;wireFormat.cacheEnabled=false,tcp://perform38:61616?keepAlive=true&amp;wireFormat.tightEncodingEnabled=false&amp;wireFormat.cacheEnabled=false)?useExponentialBackOff=false">



Name: defaultQuartzScheduler_Worker-1
State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@3bd8ed5f
Total blocked: 10  Total waited: 10

Stack trace: 
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.util.concurrent.ArrayBlockingQueue.take(Unknown Source)
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1366)
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1481)
   - locked java.lang.Object@4bdacc2e
org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:516)
org.mule.transport.jms.JmsConnector.doStart(JmsConnector.java:626)
org.mule.transport.AbstractConnector$2.onTransition(AbstractConnector.java:459)
org.mule.transport.AbstractConnector$2.onTransition(AbstractConnector.java:454)
org.mule.lifecycle.AbstractLifecycleManager.invokePhase(AbstractLifecycleManager.java:141)
org.mule.transport.ConnectorLifecycleManager.fireStartPhase(ConnectorLifecycleManager.java:63)
org.mule.transport.AbstractConnector.startAfterConnect(AbstractConnector.java:453)
   - locked org.mule.transport.jms.activemq.ActiveMQJmsConnector@20fb07d4
org.mule.transport.AbstractConnector$5.doWork(AbstractConnector.java:1601)
org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:67)
org.mule.transport.AbstractConnector.connect(AbstractConnector.java:1611)
org.mule.transport.AbstractConnector.start(AbstractConnector.java:419)
   - locked org.mule.transport.jms.activemq.ActiveMQJmsConnector@20fb07d4
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:225)
org.mule.lifecycle.RegistryLifecycleManager$RegistryLifecycleCallback.onTransition(RegistryLifecycleManager.java:276)
org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:155)
org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:126)
org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:80)
org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:121)
org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:94)
org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:90)
org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:72)
org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:64)
org.mule.DefaultMuleContext.start(DefaultMuleContext.java:202)
   - locked org.mule.DefaultMuleContext@13aaf18f

                  
> Occaional hangs on ensureConnectionInfoSent
> -------------------------------------------
>
>                 Key: AMQ-2798
>                 URL: https://issues.apache.org/jira/browse/AMQ-2798
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.3.2
>            Reporter: Mark Chaimungkalanont
>            Assignee: Timothy Bish
>             Fix For: 5.5.0
>
>         Attachments: blocked-connection-patch3
>
>
> When connecting to the broker, the client occasionally starts to hang. A thread dump reveals:
> {noformat}
> "QuartzScheduler_Worker-7" prio=5 tid=0x0116f190 nid=0x1ce2400 waiting on condition [0xf1fae000..0xf1fafb30]
> 	at sun.misc.Unsafe.park(Native Method)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1767)
> 	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:341)
> 	at org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
> 	at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:80)
> 	at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1233)
> 	at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1339)
> 	- locked <0x10b9bdf8> (a java.lang.Object)
> 	at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:298)
> 	at org.jencks.amqpool.SessionPool.createSession(SessionPool.java:110)
> 	at org.jencks.amqpool.SessionPool.makeObject(SessionPool.java:78)
> 	at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:974)
> 	at org.jencks.amqpool.SessionPool.borrowSession(SessionPool.java:53)
> 	at org.jencks.amqpool.ConnectionPool.createSession(ConnectionPool.java:89)
> 	at org.jencks.amqpool.XaConnectionPool.createSession(XaConnectionPool.java:51)
> 	at org.jencks.amqpool.PooledConnection.createSession(PooledConnection.java:132)
> 	at org.springframework.jms.support.JmsAccessor.createSession(JmsAccessor.java:200)
> {noformat}
> Looking closer at the code of {{ensureConnectionInfoSent}} in {{ActiveMQConnection}}, it uses the method:
> {code}
> public Response syncSendPacket(Command command) throws JMSException {
> {code}
> which never times out, possibly causing everything to hang eternally. There does seem to be an identical method that allows for a timeout. 
> {code}
>     public Response syncSendPacket(Command command, int timeout) throws JMSException {
> {code}
> should / can ensureConnectionInfoSent use the one with the timeout instead?
> We're using the failover transport:
> failover:(tcp://<someIP>:54663?wireFormat.maxInactivityDuration=300000)?maxReconnectAttempts=10&amp;initialReconnectDelay=15000

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira