You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by rkraus <ra...@centrum.cz> on 2017/03/06 10:09:45 UTC

Queue - doBrowse - infinite loop (AMQ 5.10.0)

Hello,
I have AMQ 5.10.0 (java 1.6) and I face to problem with infinite loop,
org.apache.activemq.broker.region.Queue.doBrowse(...) method:


I have thread dump and heap dump, but till now, I can't to write simple
example, which can simulate this problem.

I read following resources:
 -
http://activemq.2283324.n4.nabble.com/org-apache-activemq-broker-region-Queue-doBrowse-never-returns-td4680530.html
 - https://issues.apache.org/jira/browse/AMQ-4930

I have one problem with "non persistent" queue, where I guess that
destinationStatistics is out of sync with "store" (following logs are
repeated):


I have second problem with "persistent" queue, where I guess that cursor is
out of sync with "store" (following logs are repeated):


I registered commits (which was done in context AMQ-4930 issue in 5.11.x and
above):
 1. ensure we page in messages for browse/expire when destination stats are
disabled via config (replacing destinationStatistics by message cursor)
   -
https://fisheye.apache.org/changelog/activemq-6?cs=41659725f4c4fa027386148077aa76c31d8853af
   -
https://fisheye.apache.org/changelog/activemq-6?cs=f158e7da6752e4a48b12547ad09f1ae90a0d452d
   - I guess that this patch should solve my problem with "non persistent"
queue even when destinationStatistics are enabled (due destinationStatistics
aren't used)
 2. limit browse page in iterations in case cursor and store are out of sync
- avoid a spin when store does not return messages
   -
https://fisheye.apache.org/changelog/activemq-6?cs=8216e7f4d5e275cc41a3d21dea8d7ffaa430719e
   - I guess that this patch should solve my problem with "persistent" queue
(cursor and store are out of sync)

But I don't understand the last patch at all. Yes, it probably causes, that
infinite loop is finished (in some iterations). But I guess that JMX
monitoring 
still display wrong information and cursor and store are still out of sync
or I miss something?

Could you explain me the "cursor and store are out of sync" commit? I didn't
find the test for it.
Any idea how to create example, which should simulate this "endless loop" of
doBrowse(...) method 
invoked from org.apache.activemq.broker.region.Queue.expireMessages() method
initiated by "expireMessagesTask".

Thank you.
Radek Kraus



--
View this message in context: http://activemq.2283324.n4.nabble.com/Queue-doBrowse-infinite-loop-AMQ-5-10-0-tp4722965.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.