Sam hendley created AMQ-5297:
--------------------------------
Summary: PooledSession with lots of consumers can fail to start
fully
Key: AMQ-5297
URL: https://issues.apache.org/jira/browse/AMQ-5297
Project: ActiveMQ
Issue Type: Bug
Components: activemq-pool, JMS client
Affects Versions: 5.8.0
Environment: java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Reporter: Sam hendley
We have a case where we are trying to startup 100s of camel routes and it
appears to be causing an issue where the consumer is only partially started and
the thread is stuck waiting for for the consumer to be fully created. The
consumer appears to be created on the broker side so that it is getting
messages enqueued and dispatched, just never serviced.
Could this be due to our connection pool being too small? Could we avoid this
problem with asyncSend?
{quote}
"Camel (AppsJVM) thread #28 - JmsConsumer[response.queue]" - Thread t@318
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <ee029ee> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at
java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
at
org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1380)
at
org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1912)
at
org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:273)
at
org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1144)
at
org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1088)
at
org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1001)
at
org.apache.activemq.pool.PooledSession.createConsumer(PooledSession.java:311)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createConsumer(AbstractPollingMessageListenerContainer.java:503)
at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:224)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1094)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1070)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1063)
at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:960)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- locked <4deb7015> (a java.util.concurrent.ThreadPoolExecutor$Worker)
{quote}
{quote}
<bean id="JMSPooledConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="maxConnections" value="8" />
<property name="maximumActiveSessionPerConnection" value="500" />
<property name="idleTimeout" value="0" />
<property name="connectionFactory" ref="JMSConnectionFactory" />
</bean>
{quote}
--
This message was sent by Atlassian JIRA
(v6.2#6252)