[ 
https://issues.apache.org/jira/browse/AMQ-7132?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16743352#comment-16743352
 ] 

Alan Protasio commented on AMQ-7132:
------------------------------------

Hi [~cshannon]

I just ran it in my mac and on linux and all tests seems to be ok:

mvn clean install -Dtest=RecoveryStatsBrokerTest
-------------------------------------------------------
 T E S T S
-------------------------------------------------------

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.apache.activemq.broker.RecoveryStatsBrokerTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.536 sec - in 
org.apache.activemq.broker.RecoveryStatsBrokerTest

Results :

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

 

What is weird is that the test timed out in a line before doing anything... 
just creating the broker and sending messages:

[https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/java/org/apache/activemq/broker/RecoveryStatsBrokerTest.java#L152]

 

At this stage... does not make any difference if its a NORMAL, FULL_RECOVERY or 
UNCLEAN_SHUTDOWN test... All of them are failing failing in your setup?

Are you using Java 11 already? I am running the tests with java 8.

 

> ActiveMQ reads lots of index pages upon startup (after a graceful or 
> ungraceful shutdown)
> -----------------------------------------------------------------------------------------
>
>                 Key: AMQ-7132
>                 URL: https://issues.apache.org/jira/browse/AMQ-7132
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: KahaDB
>    Affects Versions: 5.15.8
>            Reporter: Alan Protasio
>            Assignee: Christopher L. Shannon
>            Priority: Major
>             Fix For: 5.16.0
>
>
> Hi.
> We noticed that ActiveMQ reads lots of pages in the index file when is 
> starting up to recover the destinations statistics:
> [https://github.com/apache/activemq/blob/master/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java#L819]
> Nowadays, in order to do that, activemq traverse the 
> storedDestination.locationIndex to get the messageCount and totalMessageSize 
> of each destination. For destinations with lots of messages this process can 
> take a while making the startup process take long time.
> In a case of a master-slave broker, this prevent the broker to fast failover 
> and does not meet what is stated on 
> [http://activemq.apache.org/shared-file-system-master-slave.html.]
> {quote}If you have a SAN or shared file system it can be used to provide 
> _high availability_ such that if a broker is killed, another broker can take 
> over immediately. 
> {quote}
> One solution for this is keep track of the destination statistics summary in 
> the index file and doing so, we dont need to read all the locationIndex on 
> the start up.
> The code change proposed is backward compatible but need a bump on the kahadb 
> version. If this information is not in the index, the broker will fall back 
> to the current implementation, which means that the first time people upgrade 
> to the new version, it will still have to read the locationIndex, but 
> subsequent restarts will be fast.
> This change should have a negligible performance impact during normal 
> activemq operation, as this change introduce a few more bytes of data to the 
> index and this information will be on checkpoints. Also, this new information 
> is synchronized with the locationIndex as they are update at the same 
> transaction.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to