5 Replies Latest reply on May 11, 2009 2:39 PM by timfox

    Order of Deliveries between Backup and Live Node

    clebert.suconic

      I have been investigating https://jira.jboss.org/jira/browse/JBMESSAGING-1558 and this is what I have found so far:


      On a regular flow, this is what happens when messages are delivered to Consumers:




      References are aways backed up before delivered to Consumers. This process is totally async. We will fire the replication and wait the callback, and when it's backed up, we will deliver messages to the consumers.


      However if the delivering messages are canceled for any reason. (that includes close, or rollback):



      QueueImpl::deliverAsync (or DeliverRunner->deliver) will remove references of the top of the list on independently of the threads being used on the repplication.

      As a result it may remove the message on LiveNode and when the message is repplicated the backup will have a different element on the top list.