I have a consumer running with transacted sessions, and looking in KahaDB, I can see a KAHA_REMOVE_MESSAGE_COMMAND, with the local transaction ID added to the journal, and then a KAHA_COMMIT_COMMAND after it. Some time later, I see the exact same KAHA_REMOVE_MESSAGE_COMMAND appended to the journal again, with the exact same transaction information, but no corresponding KAHA_COMMIT_COMMAND. This appears to follow a KAHA_REWRITTEN_DATA_FILE_COMMAND.
It looks like the ack compaction method is forwarding the acknowledgement, but not the commit - it appears that the commit is only forwarded in the case of an XA transaction.
A test and patch is available in the PR here: https://github.com/apache/activemq/pull/636
- is related to
AMQ-7067 KahaDB Recovery can experience a dangling transaction when prepare and commit occur on different data files.