Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
5.10.0
-
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.