[rabbitmq-discuss] Weird Crash (91MB message over STOMP) [Reproducible]
Darien Kindlund
darien at kindlund.com
Sat Aug 8 09:46:53 BST 2009
>>>> Okay, so after enabling verbose logging, I was able to replicate the
>>>> error, reliably.
>>>
>>> including the "messages show up as unacknowledged after restart" problem?
>>
>> YES. I think this problem is also STOMP specific! After recovering
>> the persister from the last crash. I start up a single STOMP client
>> and attempt to subscribe and get the first message off the queue. At
>> that time, rabbit.log generates this error:
>
> Hang on. At what point do you see the unacknowledged messages? Right after
> the restart? (and how? with 'rabbitmqctl list_queues'?) Or after you start
> up that single STOMP client?
>
> I am asking because when I recover your latest db dir into my rabbit
> instance I see three *ready* messages in the '500.manager.workers' queue.
I know what you mean.
I see the 'unacknowledged messages' after a start up the STOMP
clients. So, I'm thinking the order of operations is:
1) Unacknowledged messages exist on the queue
2) RabbitMQ dies
3) RabbitMQ starts up
4) Recovery mode starts, marks all un-ack'd messages as 'ready'
5) STOMP clients connect
6) RabbitMQ generates the STOMP error
7) I check the rabbitmqctl output, and see that there are un-ack'd messages
To be honest, I can't seem to replicate the issue where the STOMP
clients disconnect and the messages remain 'un-ack'd' -- I'm thinking
this error may be transient or somehow a wierd corner case. If I ever
encounter that scenario again, I'll be sure to save the mnesia
directory at that point.
>> =ERROR REPORT==== 8-Aug-2009::03:40:01 ===
>> STOMP Reply command unhandled: {'basic.deliver',
>> <<"Q_500.manager.workers">>,
>> 1,
>> false,
>> <<"events">>,
>>
>> <<"500.job.create.job.urls.job_alerts">>}
>> {content,60,
>> none,
>> ... followed by the entire message contents...
>
> That may well be a bug. Can you send me just a little bit more of the above
> error? Another k or so should do.
Okay, I'll send you another direct email with an attachment of the log.
>>> You say rabbit died with zero logging. That may well be true, but rabbit
>>> *did* produce a crash dump, and that should allow us to establish the
>>> cause
>>> of death.
>>
>> Okay, good to know.
>
> It ran out of memory, which is what I suspected.
>
>> This is interesting. So I resent the large message with 'delivery-mode' of
>> '1' instead of '2' (which should make it NOT persistent -- right?). RabbitMQ
>> still dies.
>
> Interesting indeed. Yes, that means the persister is unlikely to be the
> causing the OoM.
I don't have a pure AMQP test client, but I'm curious if this error
condition exists if the large message were sent over AMQP instead of
STOMP...
-- Darien
More information about the rabbitmq-discuss
mailing list