Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-5354

persistJMSRedelivered feature breaks the ability for KahaDB to compact its journal files

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 5.10.0
    • 5.11.0
    • Message Store
    • None
    • Patch Available

    Description

      While doing testing with persistJMSRedelivered enabled in the ActiveMQ config file (which is new in 5.10), it became obvious that the KahaDB transaction log files are never being compacted even though all messages had been consumed. This is very easy to reproduce using a standard config with the following policyEntry to enable the feature:
      <destinationPolicy>
      <policyMap>
      <policyEntries>
      <policyEntry queue=">" persistJMSRedelivered="true"></policyEntry>

      After waiting several minutes it was obvious the KahaDB transaction logs (~2500 files using 30GB of disk space) were not getting compacted and a log with DEBUG enabled (attached) shows that the files are getting filtered out as gc candidates.

      Since the updateMessage function is essentially doing a second "add message" operation down in KahaDB, it appears that the reference to the original message is not being cleaned up from the locationIndex preventing compaction of any message.
      I will attach a patch that fixes the issue but this appears to be a pretty critical issue when using the persistJMSRedelivered feature.

      Attachments

        1. activemq.log
          99 kB
          Jesse Fugitt
        2. AMQ5354.patch
          1 kB
          Jesse Fugitt

        Activity

          People

            gtully Gary Tully
            jfugitt Jesse Fugitt
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: