[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: LargeMessage & Failover Update
clebert.suconic@jboss.com
do-not-reply at jboss.com
Wed Jan 14 10:37:41 EST 2009
"Tim Fox" wrote :
| For non large messages, delivery to the client only occurs when the replication response has come back from the server. If you just do it the same as that, then should be ok?
No... This is how I used to do it, and it took me a while to figure why it was not working.
For non large messages, you're sure you will finish the delivery of the message when the replication response has come back.
However for largeMessages it doesn't work this way.
As you could interrupt chunk-delivery of the largeMessage waiting for more credits, if eventually ServerConsumer::handle is called with another message it should reject the handle being considered busy.
Doing the LargeMessageDeliver only after the response is back would cause several issues on the flowControl of the delivery.
"Tim Fox" wrote :
| Sorry, didn't understand that explanation.
This has to do with my previous explanation.
When getting the credit replicated on BackupNode, it will eventually resume delivering the LargeMessage, if it ran out of credit before.
That resume has also to be done synchronously or else the results are unpredictable. We would eventually get another message on handle while still delivering the first message.
"Tim Fox" wrote :
| What is ClientRemoteConsumer?
I meant to say RemotingConnectionImpl.
But more specifically, the PacketHandler on the client.
On largeMessageContinuations, flowControl is being called inside the handlePacket method, and failover will dead lock if it fails while the credit is being sent to the server. Using an executor on flowControl on messageContinuations fixed the problem.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201838#4201838
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201838
More information about the jboss-dev-forums
mailing list