Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
The offset of a message is only valid in the context of a messaging system (by url) and topic name. So we must key the offsets we store by these two identifiers.
We can create the new URL(messagingUrl).getHost() + "#" + JcrUtil.escapeIllegalJcrChars(topicName).
We then store the processed package offset by this key instead of the old "package" identifier.
When the env is new or we switch to a not yet used key there is no stored offset. In this case we should get the latest offset of the topic and assign to it. This way we avoid reprocessing of all messages. Additionally this can be used to reset the offset by removing the stored key path from the repository and restart the publish farm.
After the restart the offset would be repopulated with the latest offset. This would reset the queues.
Additionally we change the precondition code to skip packages earlier than the earliest confirmed package offset. This way we avoid that publish hangs waiting on a status it can never reveive as golden publish started with a higher latest offset.
To reset offsets a JMX bean is provided to allow to reset the local stores.
Attachments
Issue Links
- links to