Yes, I would expect maxFileLength should only be used on file
allocation.  My expectation is that the journal file length should be
able to be changed in between restarts and have everything work.  In
the past I have increased the size many times before without issues so
I'm not sure if the second use case is an issue (KahaDB might handle
it elsewhere) but the first portion of the startup code seems like it
might be a problem and need to be fixed.

Can you create a new Jira? I should have time to take a peak at this
next week to verify if a fix is needed.  It should be pretty
straightforward to write a quick unit test to check both scenarios
(length increasing and decreasing) to show if there is an issue and
validate any fix.

On Fri, Jan 20, 2017 at 9:58 AM, jahlborn <jahlb...@gmail.com> wrote:
> So, i was poking around to see the actual implications of changing the max
> journal file length, and i must say, the code doesn't seem to back up the
> claim that it is a safe thing to do.
>
> https://fisheye.apache.org/browse/activemq-6/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java?hb=true#to310
>
> This is the startup code.  it attempts to adjust the total length by shaving
> off an unused portion of the final data file.  if you have made the
> maxFileLength smaller since the last run, and you have actual data in the
> last journal file which is after the new maxFileLength, then this
> computation will incorrectly return a negative value.  my suspicion is that
> the length of the last data file should be used here instead of
> maxFileLength.
>
> https://fisheye.apache.org/browse/activemq-6/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java?hb=true#to867
>
> likewise, this code attempts to handle adjustments to maxFileLength since
> the journal file was created, but i think it again fails.  if the
> maxFileLength has been increased since the data file was created, this would
> seem to be setting an offset which is past the length of the current data
> file.  again, it seems like the length of the data file should be used
> directly.
>
> in general, in order for this to work correctly, the maxFileLength should
> only be used for code which is creating new files.  all the other code
> should be solely relying on the size of the existing file, right?
>
>
>
> --
> View this message in context: 
> http://activemq.2283324.n4.nabble.com/Can-you-change-the-kahadb-journal-file-size-between-broker-starts-tp4721155p4721252.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to