[jboss-jira] [JBoss JIRA] (JGRP-1540) TP: simplified message bundler

Bela Ban (JIRA) jira-events at lists.jboss.org
Wed Dec 19 11:07:08 EST 2012


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

Bela Ban commented on JGRP-1540:
--------------------------------

This could enable us to use message bundling for *all* messsages, even those tagged with OOB and possibly even DONT_BUNDLE msgs. Since a message marked as DONT_BUNDLE never has to wait for the max bundling timeout to kick in, but instead only for a batch to fill up (should be quick unless the batch size is big !) or no messages remaining in the queue, even sync RPCs might be fast. Need to bench this... e.g. how quickly do 60K fill up when a batch of 1K messages is sent (a few microsecs?)
                
> TP: simplified message bundler
> ------------------------------
>
>                 Key: JGRP-1540
>                 URL: https://issues.jboss.org/browse/JGRP-1540
>             Project: JGroups
>          Issue Type: Enhancement
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>             Fix For: 3.3
>
>
> Instead of maintaining a hashmap (like for the current bundlers), a simple blocking bounded queue of messages would be used. Whenever we've reached M bytes or N milliseconds have elapsed, a consumer thread processes the queue in the following manner:
> * First set the queue to a new queue (volatile assignment), reuse a number of queues
> * Iterate through all messages in the current queue, for each message:
>   ** If the destination is the same as the current destination, write the message to the stream for the current destination
>   ** Else set the current destination to msg.getDest() and create an output  stream (similar to writing a message list)
>     *** Stream the current message to the output stream
>     *** If there was a previous destination, close the associated output stream and send the message list
> Example:
> * We have messages with the following destinations: A, null, null, B, B, null, A, null, null, null
> * First we send a message list consisting of 1 message to A
> * Next we send a message list consisting of 2 messages to the cluster (dest==null)
> * Then we send a batch of 2 messages to B, 1 to the cluster, 1 to A and 3 to the cluster

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list