[
https://jira.jboss.org/jira/browse/JBMESSAGING-1558?page=com.atlassian.ji...
]
Clebert Suconic updated JBMESSAGING-1558:
-----------------------------------------
Attachment: diagram3.png
This is a more detailed diagram:
http://www.websequencediagrams.com/?lz=cGFydGljaXBhbnQgQ29uc3VtZXIoQSkKAA...
______________________
participant Consumer(A)
participant Consumer(B)
participant ServerConsumer(A)
participant ServerConsumerBackup(A)
participant Queue
participant QueueBackup
participant ServerConsumer(B)
participant ServerConsumerBackup(B)
#Second diagram
Consumer(A)->ServerConsumer(A): close
activate ServerConsumer(A)
ServerConsumer(A)->ServerConsumerBackup(A): close (Reference (A))
ServerConsumerBackup(A)->QueueBackup: addReferenceOnTop (Reference(A))
ServerConsumerBackup(A)->ServerConsumer(A): doneClose
ServerConsumer(A)->Queue: addReferenceOnTop (Reference(A))
deactivate ServerConsumer(A)
activate Queue
Queue->Queue: deliverAsync
note over Queue
Something will activate deliverAsync
end note
Consumer(B)->ServerConsumer(B): close (Reference (B))
Queue->ServerConsumer(A): deliverReference(A)
ServerConsumer(B)->ServerConsumerBackup(B): close (Reference(B))
ServerConsumerBackup(B)->QueueBackup: addReferenceOnTop (Reference(B))
ServerConsumerBackup(B)->ServerConsumer(B): doneClose
ServerConsumer(B)->Queue: addReferenceOnTop(Reference(B))
ServerConsumer(A)->ServerConsumerBackup(A): replicateDelivery (Reference(A))
ServerConsumer(A)->QueueBackup: getTopReference (Reference(A))
note over ServerConsumerBackup(A)
Exception! Top of the list is reference(B) and not reference(A)
end note
Order of Delivery is not being respected on backup node after
ServerConsumerImpl.close is called with pending deliveries
------------------------------------------------------------------------------------------------------------------------
Key: JBMESSAGING-1558
URL:
https://jira.jboss.org/jira/browse/JBMESSAGING-1558
Project: JBoss Messaging
Issue Type: Bug
Reporter: Clebert Suconic
Assignee: Clebert Suconic
Fix For: 2.0.0 Beta
Attachments: diagram1.png, diagram2.png, diagram3.png, diff-6724.patch
The order of queues is not being respected between backup and livenode after
ServerConsumerImpl.close is called.
ServerConsumerImpl::close will call QueueImpl::cancel for every delivering reference, and
the order of the Queues will be different between backup and live node after that
operation.
Next time deliveries are replicated they will be in different orders between the two
nodes and several issues will happen after that.
You will see exceptions like:
throw new IllegalStateException("Cannot find ref " + messageID +
" in queue " +
messageQueue.getName());
As this opertaion will fail:
public void deliverReplicated(final long messageID) throws Exception
{
MessageReference ref = messageQueue.removeFirstReference(messageID);
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira