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 !