[jboss-jira] [JBoss JIRA] Commented: (JGRP-1090) Many retransmissions with message bundling and OOB messages

Bela Ban (JIRA) jira-events at lists.jboss.org
Wed Nov 4 02:31:06 EST 2009


    [ https://jira.jboss.org/jira/browse/JGRP-1090?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12492986#action_12492986 ] 

Bela Ban commented on JGRP-1090:
--------------------------------

[Email from Brian]

I saw JGRP-1090 today an it reminded me of something I was thinking  
about back in Sept.

On the receiver side, when a bundled message comes in, a single pool  
thread unpacks it and then loops carrying each individual message up  
the stack.

I wonder if you can get some strange effects from that under load.  
E.g. sender A sends bundle 1 and then bundle 2. On receiver B, thread  
1 is processing bundle 1 when bundle 2 comes in and gets handled by  
thread 2. As a result, bundle 2 messages start arriving in NAKACK  
before a bunch of bundle 1 messages, leading to extra retransmission  
tasks.

Problem is worse if thread 1 happens to block a bit above NAKACK.

A possibility is to unpack the bundled message and then resubmit each  
individual message to the pool. But I suspect that would cost more  
than it gains.

TBH, I doubt this is a big issue, but wanted to throw it out there in  
case it sparks any thoughts on your end.

> Many retransmissions with message bundling and 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.9
>
>
> 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

        



More information about the jboss-jira mailing list