Let me elaborate on this (Jason and I work together)... By the way, we are
using the 0.5 c++ broker/client.
I think there is a problem calculating the frame size. I think in some
cases, the frame size set is larger than uint16_t, but the frame size is
calculated as uint32_t, and so the size is demoted to less than
frameOverhead() when placed in the message frame.
See this message that happens repeatedly just before the failures (from the
qpid trace logs)
2010-may-13 18:38:54 trace qpid/amqp_0_10/Connection.cpp:88: SENT
[127.0.0.1:59922]: Frame[Eb; channel=3; content (65524 bytes)
\x00\x01\x87W\x00\x00\x00\x03 $3151c8...]
2010-may-13 18:38:54 debug qpid/sys/AsynchIOHandler.cpp:169:
DISCONNECTED
[127.0.0.1:59922]
The body size in this case is 65524 bytes, but the frame size seems to be
calculated to be greater than this:
uint32_t AMQFrame::frameOverhead() {
return 12 /*frame header*/;
}
uint32_t AMQFrame::encodedSize() const {
if (!encodedSizeCache) {
encodedSizeCache = frameOverhead() + body->encodedSize();
if (body->getMethod())
encodedSizeCache += sizeof(ClassId)+sizeof(MethodId);
}
return encodedSizeCache;
}
encodedSize() returns a 32 bit unsigned int, which makes the frame size =
65524 + 12 (plus the size of ClassID/MethodID), a value which is > 65535.
We are able to reproduce this inserting similar large messages.
Let us know if you need any other info.
Thanks!
-Jen
--
View this message in context:
http://apache-qpid-users.2158936.n2.nabble.com/framing-error-Frame-size-too-small-0-tp5057022p5057378.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]