client setMessageListener for queue hangs when one queue contains 50+ messages
and after broker restart setMessageListener calls for 4 queue are called
-------------------------------------------------------------------------------------------------------------------------------------------------------
Key: AMQ-1265
URL: https://issues.apache.org/activemq/browse/AMQ-1265
Project: ActiveMQ
Issue Type: Bug
Components: JMS client, Transport
Affects Versions: 4.0.2, 4.0.1, 4.1.1
Environment: 4 queues:
SMF.OUT
ID.OUT
MD.OUT
MKLIST.OUT
client side:
Solaris - SunOS hostname 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Fire-V215
java version:
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Server VM (build 1.5.0_11-b03, mixed mode)
server: tested with same as client and windows XP SP2
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)
both client and server: ActiveMQ version 4.0.1 - 4.0.2 - 4.1.1
Reporter: Daniel Bram
A JMS client connections hangs when subscribing to queue that is filled with a
small number of messages: 50+.
The messages have been produced before shutting down the message broker
(bin\activemq.bat process), at that time the queue consumer was not connected.
Subscribing to 4 queues produces the problem. When the queue is cleared, the
problem goes away (by subscribing to only one queue for example).
ActiveMQMessageConsumer.setMessageListener
freezes on line 329
session.stop();
IntelliJ debug screen: (at the next step the wait statement freezes the client
connection).
[EMAIL PROTECTED], priority=5, in group 'main', status: 'RUNNING'
shutdown():87, PooledTaskRunner.java
stop():113, ActiveMQSessionExecutor.java
stop():1469, ActiveMQSession.java
setMessageListener():329, ActiveMQMessageConsumer.java
registerHandler():112, AbstractJMSMessagingServiceImpl.java
registerHandlerByAlias():134, ActiveMQMessagingServiceImpl.java
initMessagingHandler():412, AdapterDeployer.java
initAdapterHandlers():341, AdapterDeployer.java
run():139, AdapterDeployer.java
call():442, Executors.java
run():176, FutureTask.java
access$101():138, ScheduledThreadPoolExecutor.java
run():237, ScheduledThreadPoolExecutor.java
runWorker():987, ThreadPoolExecutor.java
run():528, ThreadPoolExecutor.java
run():595, Thread.java
When watching the debug session, the boolean variable "iterating" is set to
true in PooledTaskRunner.java for the blocking setMessageListener call. The
other non blocking setMessageListeners have their iteration boolean set to
false. Does the fact that one queue contains message set this to true maybe ?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.