Details
Description
There is a bug in KahaDB on message add where if a message is marked as a duplicate the orderIndex next message Id is not rolled back. When a duplicate is detected and ignored the index is supposed to be rolled back so that the state isn't broken but in this case the sequence id is still incremented and this leads to gaps in the order index sequence.
KahaDB tracks pending messages that need to be acknowledged for durable subs in a SequenceSet and that set is expected to be contiguous and if it isn't it breaks. The gaps lead to the store reporting messages still exist for durables and they appear as "stuck" even though there are no messages.
The fix is to roll back the counter (this is already done in another spot) so it is only incremented if the message is stored. If an existing store is broken by this bug an index rebuild is likely necessary but then it wouldn't come back.