Description
I was exploring the idea of changing the kahadb journal file length on an activemq instance which already has existing data (during a system restart). Initial response from activemq insiders was that this was a supported action, but while examining the Journal source, i stumbled on code which would seem to indicate that it isn't handled correctly
Source thread: http://activemq.2283324.n4.nabble.com/Can-you-change-the-kahadb-journal-file-size-between-broker-starts-td4721155.html#a4721252
Potential problem areas (from forum post):
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.
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?