[jboss-jira] [JBoss JIRA] Commented: (JGRP-667) Occasionally, messages get too large for the UDP transport

Bela Ban (JIRA) jira-events at lists.jboss.org
Wed Jan 23 09:56:21 EST 2008


    [ http://jira.jboss.com/jira/browse/JGRP-667?page=comments#action_12396367 ] 
            
Bela Ban commented on JGRP-667:
-------------------------------

The preferred solution I picked is less intrusive:
- I didn't want to force Header implementors to provide the magic number themselves
- All headers which are internal to JGroups were added to jg-magic-map.xml. Since this file ships with the JGroups JAR, it will always be found
- User-defined headers should be registered with the ClassConfigurator through the add() method

The effect is that all headers have a magic number...

> Occasionally, messages get too large for the UDP transport
> ----------------------------------------------------------
>
>                 Key: JGRP-667
>                 URL: http://jira.jboss.com/jira/browse/JGRP-667
>             Project: JGroups
>          Issue Type: Bug
>            Reporter: Bela Ban
>         Assigned To: Bela Ban
>             Fix For: 2.7, 2.6.2
>
>
> When message bundling is enabled (say max_bytes=60K), every now and then we get a larger message (say 70K), and then the msg is dropped because UDP has a size limit of 65K.
> This can happen as follows:
> - Either magic-map.xml is not found or some headers are not in magic-map
> - Say we accumulated 100 messages in the message bundler. Before adding a new message, the bundler
>   checks its size (Message.size()), which calls size() on all headers
> - A header just assumes it has a magic number and returns its size, including 2 bytes for the magic number (a 
>   short)
> - If magic-number.xml is not found, or some headers have no magic number, then we write the fully qualified  
>   classname of the class into the stream. So let's assume that's 30 bytes versus the 2 size() returned.
> - If we have 3 headers/msg which have the additional 28 bytes, and 100 messages, then the serialized 
>   message is 8400 bytes larger than what Message.size() returned
> - So the marshalled message is now 68400 bytes and it will get discarded by UDP !

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list