[ https://issues.apache.org/jira/browse/AMQ-6133?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christopher L. Shannon resolved AMQ-6133. ----------------------------------------- Resolution: Fixed Assignee: Christopher L. Shannon Patch and test submitted by [~tabish121] applied to master and 5.13.x. > Message updates can cause message loss on recovery > -------------------------------------------------- > > Key: AMQ-6133 > URL: https://issues.apache.org/jira/browse/AMQ-6133 > Project: ActiveMQ > Issue Type: Bug > Components: Broker, KahaDB > Affects Versions: 5.13.0 > Reporter: Christopher L. Shannon > Assignee: Christopher L. Shannon > Fix For: 5.13.1, 5.14.0 > > Attachments: AMQ6133PersistJMSRedeliveryTest.java, AMQ6133Test.java > > > After doing some testing with AMQ-6131, I noticed a similar issue where > messages can be lost if a message update is called. > Normally when KahaDB gets a KahaUpdateMessageCommand it will update the index > with the new location. This works except that if the index is deleted or > corrupted and needs to be rebuilt, the replay process may not be able to > recover the message. > This happens because after the message is updated, KahaDB is free to garbage > collect the file with the original add command. So, whatt happens is that > during replay when the update command is seen KahaDB rejects it because it > can't find the original message if that file has been GC'd. This happens in > the updateIndex method of MessageDatabase on line 1395 where it prints out a > warning saying "Non existent message update attempt rejected". > I am attaching a unit test that demonstrates the issue where the count after > restart is missing messages. -- This message was sent by Atlassian JIRA (v6.3.4#6332)