[jboss-jira] [JBoss JIRA] (JGRP-1540) TP: simplified message bundler
Bela Ban (JIRA)
jira-events at lists.jboss.org
Mon Feb 11 06:30:56 EST 2013
[ https://issues.jboss.org/browse/JGRP-1540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12753376#comment-12753376 ]
Bela Ban commented on JGRP-1540:
--------------------------------
In the example:
A, null, null, B, B, null, A, null, null, null,
it would probably make more sense to send [A,A], [null, null, nul, null, null] and [B,B] as batches, rather than sending A, [null, null], [B,B], null, A, [null,null,null].
In the worst case if we have 2 threads T1 sending 50 messages to A and T2 sending 50 messages to B, we could end up with message interspersing, so that we have A,B,A,B,A,B,...
It would be better to send A's 50 messages as *one* batch, and then B's 50 as another batch.
> 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