"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#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...