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

Gary Tully commented on AMQ-5748:
---------------------------------

yep - demand for it is a key concern, because it will force an index rebuild so 
it will impact users. Folks that have a large journal will see a really slow 
start up first time! Maybe we need to implement an auto upgrade for the 
marshaller, so that we just rewrite the index with 0 size and only folks that 
want to see the size metric will have to replay the journal. 
There are some examples of this in the StoredDestinationMarshaller - where it 
checks versions.

I mentioned mKahaDB because it will give you a kahaDB instance per destination 
- which would make the store size ~= the destination message size accumulator. 
So it would work today  or just need some minor tweaks. In some ways that may 
be sufficient. Just a thought :-)

I guess the size based flow control would be the killer app, and for that we 
need to be able to recreate from the index, unless we push mKahaDB for that use 
case too!

> Add the ability to get Message Size from a Message Store
> --------------------------------------------------------
>
>                 Key: AMQ-5748
>                 URL: https://issues.apache.org/jira/browse/AMQ-5748
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Broker
>    Affects Versions: 5.11.1
>            Reporter: Christopher L. Shannon
>            Priority: Minor
>
> Currently, the {{MessageStore}} interface supports getting a count for 
> messages ready to deliver using the {{getMessageCount}} method.  It would 
> also be very useful to be able to retrieve the message sizes for those counts 
> as well for keeping track of metrics.
> I've created a pull request to address this that adds a {{getMessageSize}} 
> method that focuses specifically on KahaDB and the Memory store.  The KahaDB 
> store uses the same strategy as the existing {{getMessageCount}} method, 
> which is to iterate over the index and total up the size of the messages.  
> There are unit tests to show the size calculation and a unit test that shows 
> a store based on version 5 working with the new version (the index is rebuilt)
> One extra issue is that the size was not being serialized to the index (it 
> was not included in the marshaller) so that required making a slight change 
> and adding a new marshaller for {{Location}} to store the size in the 
> location index of the store.  Without this change, the size computation would 
> not work when the broker was restarted since the size was not serialized.
> Note that I wasn't sure the best way to handle the new marshaller and version 
> compatibilities so I incremented the KahaDB version from 5 to 6. If an old 
> version of the index is loaded, the index should be detected as corrupted and 
> be rebuilt with the new format.  If there is a better way to handle this 
> upgrade let me know and the patch can certainly be updated.



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

Reply via email to