[
https://issues.apache.org/activemq/browse/AMQ-2465?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aaron Baff closed AMQ-2465.
---------------------------
Resolution: Fixed
Fix Version/s: 5.3.0
Sorry, I had ActiveMQ 5.1 libraries loaded by accident, after doing several
tests with ActiveMQ 5.3, it appears to work as expected. I receive the
exception as expected.
> MessageConsumer.receive(timeout) with prefetchSize=0 results in hang when
> broker goes down
> ------------------------------------------------------------------------------------------
>
> Key: AMQ-2465
> URL: https://issues.apache.org/activemq/browse/AMQ-2465
> Project: ActiveMQ
> Issue Type: Bug
> Components: JMS client
> Affects Versions: 5.3.0
> Environment: WinXP, Netbeans 6.7, JDK 1.5
> Reporter: Aaron Baff
> Fix For: 5.3.0
>
>
> I'm doing some testing to verify that I detect and correctly handle when the
> broker goes down while consuming. I came across some strange behavior where
> the consumers recieve(timeout) call would hang and not throw an exception
> which prevented me from detecting any error, which means I couldn't back off
> and take appropriate actions. I traced down the call, and it seems that when
> the prefetch size is set to 0, there is a separate code path which is
> ActiveMQMessageConsumer:550 where it then calls the
> MessageDispatchChannel.dequeue(timeout) with a timeout of -1 which the
> comments indicate that will wait for the broker to push the message down the
> connection at which time it will be received. However, since I am stopping
> the broker, it seems that the sendPullCommand() from
> ActiveMQMessageConsumer:513 is getting sent, but there is a race condition
> with the MessageDispatchChannel.dequeue(timeout) and the code hitting the
> mutex.wait() in MessageDispatchChannel:75, which doesn't have a timeout and
> so the broker never notifies the client that there is a message or that it
> should unblock and the consumers sit there stuck.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.