[ 
https://issues.apache.org/jira/browse/AMQ-5340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vermeulen updated AMQ-5340:
---------------------------
    Attachment: AMQ5340BrowsingPerformanceBug.java

Attached JUnit test that shows the issue. On my machine it runs in 0.7ms when 
sending 50 messages using EXPIRE_MESSAGES_PERIOD = 200. With 
EXPIRE_MESSAGES_PERIOD = 10000 and otherwise the same settings it runs in 
10.5s, with EXPIRE_MESSAGES_PERIOD = 30000 in 30.5s.

> QueueBrowser hangs until accidentally 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
>         Attachments: AMQ5340BrowsingPerformanceBug.java
>
>
> I would expected browsing a queue with only a few messages to not take 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 with that.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to