59 - Direct Mode "message too large" error

Reported by mjeungmjeung (1240615062|%O ago)

This issue is actually 3 different closely related issues, all somewhat related to the (now fixed) http://www.openamq.org/issue:53

Issue One

When I run this command against a broker running in Direct Mode:

./amq_client -x 2097113

This message is displayed:

22:40:58: I: opened connection to OpenAMQ Server/1.4b2
22:40:58: I: (1) sending 1 messages to server…
22:40:58: I: (1) reading messages back from server…

Panic at 2009-04-24 22:40:58 from WireAPI
DMP message too large (>2097152 bytes)
amq_client: amq_client_agent.c:20622: action_write_direct_content: Assertion ‘rc == 0’ failed.
Abort (core dumped)

However, the message that I've sent is smaller 2097152 bytes. Perhaps this is because some additional header information is being added to the message during transit? The error message is a little misleading, because 2097113 < 2097152.

Issue Two

If I restart the amq_server from a completely clean slate in direct mode, and try running these commands:

(A.) ./amq_client -x 2097111
(B.) ./amq_client -x 2097112
(C.) ./amq_client -x 2097113

A always succeeds.
B sometimes(!) succeeds.
C never succeeds.

It seems weird that (B) sometimes succeeds. It seems like it should always succeed, or always fail.

Issue Three

Ultimately, the above two issues are relatively minor - more like curiousities that I've run into. The real question I have is this: Are there any plans to allow Direct Mode to send/receive messages that are larger than 2097152 bytes? I know in the past, some discussion of segmenting the messages was kicked around. Has there a been a decision one way or another as to whether or not Direct Mode will support larger messages?

My specific use case is this: In general, I'm going to be sending a bunch of very small messages back and forth between applications. The overall system has some low-latency, high-throughput requirements, so I really would prefer to be using Direct Mode if possible. However, every now and then some of the applications need to be able to send larger messages. Currently, because the Direct Mode message size limit, this basically means I can't used Direct Mode.

Basically, I want to take advantage of the performance benefits for Direct Mode when I'm sending small messages, but I don't want this too preclude me from sending larger messages.

If this doesn't make sense, would it be possible to allow the bucket_size to be a dynamically configurable option?

It looks like the IPR_BUCKET_MAX_SIZE is defined in a couple of places inside base2/ipr:

$ grep IPR_BUCKET_MAX_SIZE * | grep define
ipr_bucket.h:#define IPR_BUCKET_MAX_SIZE 2097152
ipr_bucket.icl:#define IPR_BUCKET_MAX_SIZE 2097152
ipr.h:#define IPR_BUCKET_MAX_SIZE 2097152

Are there any significant drawbacks to increasing the bucket size to a larger value?

I'm very interested to get your thoughts on this matter. Thanks!


No files attached to this page.


Add a New Comment

Edit | Files | Tags | Print

rating: 0+x

Who's following this issue?

Watch: site | category | page

Submitted by mjeungmjeung

Use one of these tags to say what kind of issue it is:

  • issue - a fault in the software or the packaging or the documentation.
  • change - a change or feature request.

Use one of these tags to say what state the issue is in:

  • open - a new, open issue.
  • closed - issue has been closed.
  • rejected - the issue has been rejected.

Use one of these tags to say how urgent the issue is:

  • fatal - the issue is stopping all work.
  • urgent - it's urgent.

All open

89 - multi-threaded client connection failure (17 Nov 2012 16:28) [open]
87 - Zyre returns incomplete XML (26 Apr 2010 08:15) [open]
86 - SFL 'random(num)' macro is wrong in sfl.h (31 Mar 2010 09:23) [open]
85 - Zyre does not start on Solaris (23 Mar 2010 01:29) [open]
84 - OpenAMQ JMS - AMQTopic constructor use HEADER name and class instead of TOPIC (28 Jan 2010 17:04) [open]
83 - WireAPI: How to 'override' signal handlers? (14 Jan 2010 17:33) [open]
82 - Opf Classes Cannot Accept Default Values With Characte (06 Jan 2010 09:34) [open]
81 - AMQP Topic Exhange Routing (29 Dec 2009 00:21) [open]
80 - OpenAMQ reports malformed frame on 0-9-1 queue.unbind (20 Nov 2009 12:33) [open]
79 - AMQ Server crashing if subscribe topic is set as #.# (30 Oct 2009 06:11) [open]
78 - Error while publishing the messages faster (30 Oct 2009 05:57) [open]
77 - Tuning for latency (28 Oct 2009 16:47) [open]
76 - New user forum (28 Oct 2009 11:29) [change open]
74 - Simulaneous connect/disconnect from multiple threads crashes (03 Sep 2009 15:32) [open]
73 - Topic Exchange not sending a message to XXX.* (25 Aug 2009 21:10) [open]
72 - amq_content_basic_new() causes seg fault if not connected to broker (12 Aug 2009 23:50) [open]
71 - zyre bugs (06 Aug 2009 09:33) [open]
69 - OpenAMQ and Zyre (15 Jul 2009 11:27) [open]
68 - Change names of max and min source code macros (10 Jul 2009 16:52) [open]
67 - Server crash when multiple consumers ack on shared queue (26 Jun 2009 11:35) [open]

page 1 of 212next »

Most recent