[
https://jira.jboss.org/jira/browse/JBMESSAGING-1558?page=com.atlassian.ji...
]
Clebert Suconic updated JBMESSAGING-1558:
-----------------------------------------
Attachment: diagram2.png
#www.websequencediagrams.com
URL for regeneration:
http://www.websequencediagrams.com/?lz=cGFydGljaXBhbnQgQ29uc3VtZXIoQSkKAA...
Syntax:
____________________________________________________________
participant Consumer(A)
participant Consumer(B)
#Second diagram
Consumer(A)->ServerConsumer(A): close
activate ServerConsumer(A)
ServerConsumer(A)->ServerConsumerBackup(A): close (Reference (A))
ServerConsumerBackup(A)->ServerConsumer(A): done
deactivate ServerConsumer(A)
participant ServerConsumer(B)
participant ServerConsumerBackup(B)
participant QueueImpl
activate QueueImpl
QueueImpl->QueueImpl: promptDelivery Reference(A)
note over QueueImpl
Something will activate promptDelivery
end note
Consumer(B)->ServerConsumer(B): close (Reference (B))
QueueImpl->ServerConsumer(A): deliverReference(A)
note over QueueImpl
At this point top of the list on Live is ReferenceA
end note
deactivate QueueImpl
ServerConsumer(B)->ServerConsumerBackup(B): close (Reference(B))
ServerConsumer(A)->ServerConsumerBackup(A): replicateDelivery (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, 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