[
https://jira.jboss.org/jira/browse/JGRP-1090?page=com.atlassian.jira.plug...
]
Bela Ban commented on JGRP-1090:
--------------------------------
For now, the bundlers were changed to store messages per *cluster and destination
address*, e.g. messages with dest=null for "cluster1" are stored separately from
messages to "cluster2".
This way, messages sent on a shared transport to different clusters won't get handled
by the same thread at the receiver(s). Also, multicast messages won't interfere with
unicast messages.
The old solution stored messages under only the destination as key, and didn't take
the cluster name into account.
So the only messages that will be delivered by the same thread are messages from the same
sender to the same destination and cluster.
To be investigated: should we neverthless bundle OOB messages as well ? This would entail
having a separate hashmap in the bundlers, and handle every OOB message of a message
bundle with a separate thread at the receiver(s).
Bundle OOB messages
-------------------
Key: JGRP-1090
URL:
https://jira.jboss.org/jira/browse/JGRP-1090
Project: JGroups
Issue Type: Task
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.10
When message bundling is enabled, we queue *regular* messages until max_bundle_size has
been reached or max_bundle_timeout has exceeded.
The problem is that - when sending OOB (as opposed to regular) messages - they're
*not* queued. This means the OOB message is possibly received *before* the regular
messages and thus causes retransmission !
E.g. we send regular message 1-10, then OOB message 11.
Say 1-3 are sent immediately (because the bundle timeout kicked in or the size was
exceeded). Messages 4-10 are queued and sent later. Message 11 is sent immediately.
On the receiver side, message reception could be for example: 1-3, 11, 4-10
When OOB message 11 is received, the receiver asks for retransmission of messages 4-10 !
This is not incorrect, but causes a lot of unneeded retransmissions !
public static void main(String[] args) throws Exception {
JChannel c1=new JChannel("/home/bela/fast.xml");
c1.connect("bla3");
JChannel c2=new JChannel("/home/bela/fast.xml");
c2.connect("bla3");
for(int i=1; i <= 20; i++) {
c1.send(null, null, "hello-" + i);
}
Message oob_msg=new Message(null, null, "oob msg");
oob_msg.setFlag(Message.OOB);
c1.send(oob_msg);
Util.sleep(20000);
Util.close(c2, c1);
}
--
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