[ 
https://issues.apache.org/jira/browse/AMQ-3978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothy Bish updated AMQ-3978:
------------------------------

    Priority: Minor  (was: Major)
    
> Allow KahaDB to "compact" journal files to remove messages that are no longer 
> needed
> ------------------------------------------------------------------------------------
>
>                 Key: AMQ-3978
>                 URL: https://issues.apache.org/jira/browse/AMQ-3978
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Message Store
>    Affects Versions: 5.6.0
>            Reporter: Tim Bain
>            Priority: Minor
>
> KahaDB uses a write-only journaling approach that ensures that a journal file 
> will be deleted only when no content within it is still in use.  If a single 
> byte of the file is still needed, the entire file must be kept, even if the 
> rest of the file is not needed.
> This works fine when all messages are immediately removed from destinations 
> within an ActiveMQ broker, but it fails ungracefully when messages that are 
> consumed infrequently (or not at all, relying on TTL to delete the messages) 
> are interspersed with large volumes of messages that are consumed quickly.  
> In this scenario, if a single infrequently-consumed message ends up in a 
> journal file with a large number of quickly-consumed messages, the entire 
> file will be kept even though nearly all of the content of the file is no 
> longer needed.  When this happens for enough journal files, the KahaDB's 
> disk/file limits are reached, even though the amount of actual "live" data 
> within the KahaDB is far below the configured limits.
> To fix this problem, an administrative feature needs to be added to KahaDB, 
> to allow it to "compact" its journal files by scanning through all files in 
> order, writing all messages that are still alive into a set of new journal 
> files.  Once all messages from one of the old journal files have been written 
> to the new set of journal files, the old journal file can be deleted.  
> Without knowing the codebase for KahaDB, I would assume this would have to be 
> done while the KahaDB processes are blocking reads and writes, so presumably 
> the recommendation in the documentation will be to use this feature sparingly 
> to prevent performance degradation.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to