[
https://issues.apache.org/jira/browse/AMQ-5340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish resolved AMQ-5340.
-------------------------------
Resolution: Fixed
Fix Version/s: 5.12.0
Fix applied, thanks!
> QueueBrowser with expired messages hangs until woken by expired messages
> background job
> ---------------------------------------------------------------------------------------
>
> Key: AMQ-5340
> URL: https://issues.apache.org/jira/browse/AMQ-5340
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.9.0, 5.10.0
> Reporter: Vermeulen
> Priority: Critical
> Labels: QueueBrowser
> Fix For: 5.12.0
>
> Attachments: AMQ5340BrowsingPerformanceBug.java,
> AMQ5340BrowsingPerformanceBugCorrected.java, AMQ5340BrowsingWithSpring.java
>
>
> I would expect browsing a queue with only a few messages to not take a long
> time. Indeed it normally takes only a few ms. in my application. But
> sometimes the ActiveMQQueueBrowser hangs for up to 30 seconds at method
> before returning!
> When the issue occurs, the loop in hasMoreElements() calls waitForMessage()
> multiple times which times out after 2s at semaphore.wait(2000) without
> receiving any message from the broker. I found that when the broker's
> background job that checks for expired messages runs, the browser happens to
> be woken even if there are no expired messages. So setting the
> expireMessagesPeriod to a low value (e.g. 200ms) is a good workaround for
> this issue, but this is quite brittle because it uses internal broker
> implementation that may not even be related to the issue!
> To reproduce:
> - (this is what I do in my application) create a queue, send a few message
> with an expiration time of 10 seconds and repeatedly browse it until it is
> empty. If I browse the queue after these 10 seconds have passed, the issue
> occurs!
> - I can always reproduce the issue by running AMQ580BrowsingBug from the
> related bug report AMQ-4595: this browsing test seems to always hang. I
> slightly adjusted the test so you can easily change the expired messages
> period and see the runtime differ when changing this.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)