Skip Menu |

This queue is for tickets about the AnyEvent-RabbitMQ CPAN distribution.

Report information
The Basics
Id: 95777
Status: resolved
Priority: 0/
Queue: AnyEvent-RabbitMQ

People
Owner: Nobody in particular
Requestors: vgolubev [...] openstat.ru
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: frame_too_large - Doesn't work with big multi-frame messages
Date: Mon, 19 May 2014 14:05:50 +0400
To: bug-AnyEvent-RabbitMQ [...] rt.cpan.org
From: Vitaly Golubev <vgolubev [...] openstat.ru>
There is a problem with multi-frame messages, if message size is bigger than frame_max in RabbitMQ (default is 128 KB). RabbitMQ returns error 501 in this case - 501FRAME_ERROR - type 3, all octets = <<>>: {frame_too_large,331164,131064} Tested with: AnyEvent::RabbitMQ 1.16 Perl 5.18.2 FreeBSD 8.4-STABLE-20130915 How to repeat: 1. Use default settings in RabbitMQ 2. in file 04_anyevent.t from the package in line 182 replace for my $size (10, 131_064, 10) { to for my $size (10, 331_064, 10) { and run this test Result: Show quoted text
________________________________ ……. ok 12 - get large size: 10 not ok 13 - on_failure: Expected Basic::GetOk,Basic::GetEmpty but got Net::AMQP::Protocol::Connection::Close # Failed test 'on_failure: Expected Basic::GetOk,Basic::GetEmpty but got Net::AMQP::Protocol::Connection::Close' # at bin/04_anyevent.t line 462. Error in channel on_close callback, ignored: 501FRAME_ERROR - type 3, all octets = <<>>: {frame_too_large,331164,131064} at bin/04_anyevent.t line 91. at local/lib/perl5/AnyEvent/RabbitMQ/Channel.pm line 176. EV: error in callback (ignoring): close: 501FRAME_ERROR - type 3, all octets = <<>>: {frame_too_large,331164,131064} at bin/04_anyevent.t line 69. main::__ANON__('Net::AMQP::Frame::Method=HASH(0x801e6dc48)') called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 275 AnyEvent::RabbitMQ::_server_closed('AnyEvent::RabbitMQ=HASH(0x801e35678)', 'CODE(0x80339db28)', 'Net::AMQP::Frame::Method=HASH(0x801e6dc48)') called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 256 AnyEvent::RabbitMQ::_check_close_and_clean('AnyEvent::RabbitMQ=HASH(0x801e35678)', 'Net::AMQP::Frame::Method=HASH(0x801e6dc48)', 'CODE(0x80339db28)') called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 223 AnyEvent::RabbitMQ::__ANON__('AnyEvent::Handle=HASH(0x801e6a228)', '\x{a}\x{0}2\x{1}\x{f5}HFRAME_ERROR - type 3, all octets = <<>>: {frame_too_lar...') called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 1500 AnyEvent::Handle::__ANON__('AnyEvent::Handle=HASH(0x801e6a228)') called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 1310 AnyEvent::Handle::_drain_rbuf('AnyEvent::Handle=HASH(0x801e6a228)') called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 2009 AnyEvent::Handle::__ANON__('EV::IO=SCALAR(0x804ac0e88)', 1) called at local/lib/perl5/amd64-freebsd/AnyEvent/Impl/EV.pm line 88 eval {...} called at local/lib/perl5/amd64-freebsd/AnyEvent/Impl/EV.pm line 88 AnyEvent::CondVar::Base::_wait('AnyEvent::CondVar=HASH(0x801e6d210)') called at local/lib/perl5/amd64-freebsd/AnyEvent.pm line 1992 AnyEvent::CondVar::Base::recv('AnyEvent::CondVar=HASH(0x801e6d210)') called at bin/04_anyevent.t line 499 main::send_large_size_message('AnyEvent::RabbitMQ::Channel=HASH(0x80469f180)', 331164) called at bin/04_anyevent.t line 189 Can't publish on inactive channel (server flow control); provide on_inactive callback at bin/04_anyevent.t line 480. # Tests were run but no plan was declared and done_testing() was not seen.
________________________________
I have a PR in for this that fixes this bug: https://github.com/bobtfish/AnyEvent-RabbitMQ/pull/12 On Mon May 19 06:06:07 2014, vgolubev@openstat.ru wrote: Show quoted text
> There is a problem with multi-frame messages, if message size is > bigger than frame_max in RabbitMQ (default is 128 KB). > RabbitMQ returns error 501 in this case - 501FRAME_ERROR - type 3, all > octets = <<>>: {frame_too_large,331164,131064} > > Tested with: > AnyEvent::RabbitMQ 1.16 > Perl 5.18.2 > FreeBSD 8.4-STABLE-20130915 > > How to repeat: > 1. Use default settings in RabbitMQ > 2. in file 04_anyevent.t from the package > in line 182 replace > for my $size (10, 131_064, 10) { > to > for my $size (10, 331_064, 10) { > > and run this test > > Result: > ________________________________ > ……. > ok 12 - get large size: 10 > not ok 13 - on_failure: Expected Basic::GetOk,Basic::GetEmpty but got > Net::AMQP::Protocol::Connection::Close > # Failed test 'on_failure: Expected Basic::GetOk,Basic::GetEmpty but > got Net::AMQP::Protocol::Connection::Close' > # at bin/04_anyevent.t line 462. > Error in channel on_close callback, ignored: > 501FRAME_ERROR - type 3, all octets = <<>>: > {frame_too_large,331164,131064} at bin/04_anyevent.t line 91. > at local/lib/perl5/AnyEvent/RabbitMQ/Channel.pm line 176. > EV: error in callback (ignoring): close: 501FRAME_ERROR - type 3, all > octets = <<>>: {frame_too_large,331164,131064} at bin/04_anyevent.t > line 69. > main::__ANON__('Net::AMQP::Frame::Method=HASH(0x801e6dc48)') > called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 275 > AnyEvent::RabbitMQ::_server_closed('AnyEvent::RabbitMQ=HASH(0x801e35678)', > 'CODE(0x80339db28)', 'Net::AMQP::Frame::Method=HASH(0x801e6dc48)') > called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 256 > AnyEvent::RabbitMQ::_check_close_and_clean('AnyEvent::RabbitMQ=HASH(0x801e35678)', > 'Net::AMQP::Frame::Method=HASH(0x801e6dc48)', 'CODE(0x80339db28)') > called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 223 > AnyEvent::RabbitMQ::__ANON__('AnyEvent::Handle=HASH(0x801e6a228)', > '\x{a}\x{0}2\x{1}\x{f5}HFRAME_ERROR - type 3, all octets = <<>>: > {frame_too_lar...') called at local/lib/perl5/amd64- > freebsd/AnyEvent/Handle.pm line 1500 > AnyEvent::Handle::__ANON__('AnyEvent::Handle=HASH(0x801e6a228)') > called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 1310 > AnyEvent::Handle::_drain_rbuf('AnyEvent::Handle=HASH(0x801e6a228)') > called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 2009 > AnyEvent::Handle::__ANON__('EV::IO=SCALAR(0x804ac0e88)', 1) > called at local/lib/perl5/amd64-freebsd/AnyEvent/Impl/EV.pm line 88 > eval {...} called at local/lib/perl5/amd64- > freebsd/AnyEvent/Impl/EV.pm line 88 > AnyEvent::CondVar::Base::_wait('AnyEvent::CondVar=HASH(0x801e6d210)') > called at local/lib/perl5/amd64-freebsd/AnyEvent.pm line 1992 > AnyEvent::CondVar::Base::recv('AnyEvent::CondVar=HASH(0x801e6d210)') > called at bin/04_anyevent.t line 499 > main::send_large_size_message('AnyEvent::RabbitMQ::Channel=HASH(0x80469f180)', > 331164) called at bin/04_anyevent.t line 189 > Can't publish on inactive channel (server flow control); provide > on_inactive callback at bin/04_anyevent.t line 480. > # Tests were run but no plan was declared and done_testing() was not > seen. > ________________________________
Subject: Re: [rt.cpan.org #95777] frame_too_large - Doesn't work with big multi-frame messages
Date: Mon, 26 May 2014 16:42:31 +0400
To: bug-AnyEvent-RabbitMQ [...] rt.cpan.org
From: Vitaly Golubev <vgolubev [...] openstat.ru>
Yes, your patch fixes the problem for me too. Thank you. On 24 мая 2014 г., at 0:23, William Cox via RT <bug-AnyEvent-RabbitMQ@rt.cpan.org> wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=95777 > > > I have a PR in for this that fixes this bug: https://github.com/bobtfish/AnyEvent-RabbitMQ/pull/12 > > > On Mon May 19 06:06:07 2014, vgolubev@openstat.ru wrote:
>> There is a problem with multi-frame messages, if message size is >> bigger than frame_max in RabbitMQ (default is 128 KB). >> RabbitMQ returns error 501 in this case - 501FRAME_ERROR - type 3, all >> octets = <<>>: {frame_too_large,331164,131064} >> >> Tested with: >> AnyEvent::RabbitMQ 1.16 >> Perl 5.18.2 >> FreeBSD 8.4-STABLE-20130915 >> >> How to repeat: >> 1. Use default settings in RabbitMQ >> 2. in file 04_anyevent.t from the package >> in line 182 replace >> for my $size (10, 131_064, 10) { >> to >> for my $size (10, 331_064, 10) { >> >> and run this test >> >> Result: >> ________________________________ >> ……. >> ok 12 - get large size: 10 >> not ok 13 - on_failure: Expected Basic::GetOk,Basic::GetEmpty but got >> Net::AMQP::Protocol::Connection::Close >> # Failed test 'on_failure: Expected Basic::GetOk,Basic::GetEmpty but >> got Net::AMQP::Protocol::Connection::Close' >> # at bin/04_anyevent.t line 462. >> Error in channel on_close callback, ignored: >> 501FRAME_ERROR - type 3, all octets = <<>>: >> {frame_too_large,331164,131064} at bin/04_anyevent.t line 91. >> at local/lib/perl5/AnyEvent/RabbitMQ/Channel.pm line 176. >> EV: error in callback (ignoring): close: 501FRAME_ERROR - type 3, all >> octets = <<>>: {frame_too_large,331164,131064} at bin/04_anyevent.t >> line 69. >> main::__ANON__('Net::AMQP::Frame::Method=HASH(0x801e6dc48)') >> called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 275 >> AnyEvent::RabbitMQ::_server_closed('AnyEvent::RabbitMQ=HASH(0x801e35678)', >> 'CODE(0x80339db28)', 'Net::AMQP::Frame::Method=HASH(0x801e6dc48)') >> called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 256 >> AnyEvent::RabbitMQ::_check_close_and_clean('AnyEvent::RabbitMQ=HASH(0x801e35678)', >> 'Net::AMQP::Frame::Method=HASH(0x801e6dc48)', 'CODE(0x80339db28)') >> called at local/lib/perl5/AnyEvent/RabbitMQ.pm line 223 >> AnyEvent::RabbitMQ::__ANON__('AnyEvent::Handle=HASH(0x801e6a228)', >> '\x{a}\x{0}2\x{1}\x{f5}HFRAME_ERROR - type 3, all octets = <<>>: >> {frame_too_lar...') called at local/lib/perl5/amd64- >> freebsd/AnyEvent/Handle.pm line 1500 >> AnyEvent::Handle::__ANON__('AnyEvent::Handle=HASH(0x801e6a228)') >> called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 1310 >> AnyEvent::Handle::_drain_rbuf('AnyEvent::Handle=HASH(0x801e6a228)') >> called at local/lib/perl5/amd64-freebsd/AnyEvent/Handle.pm line 2009 >> AnyEvent::Handle::__ANON__('EV::IO=SCALAR(0x804ac0e88)', 1) >> called at local/lib/perl5/amd64-freebsd/AnyEvent/Impl/EV.pm line 88 >> eval {...} called at local/lib/perl5/amd64- >> freebsd/AnyEvent/Impl/EV.pm line 88 >> AnyEvent::CondVar::Base::_wait('AnyEvent::CondVar=HASH(0x801e6d210)') >> called at local/lib/perl5/amd64-freebsd/AnyEvent.pm line 1992 >> AnyEvent::CondVar::Base::recv('AnyEvent::CondVar=HASH(0x801e6d210)') >> called at bin/04_anyevent.t line 499 >> main::send_large_size_message('AnyEvent::RabbitMQ::Channel=HASH(0x80469f180)', >> 331164) called at bin/04_anyevent.t line 189 >> Can't publish on inactive channel (server flow control); provide >> on_inactive callback at bin/04_anyevent.t line 480. >> # Tests were run but no plan was declared and done_testing() was not >> seen. >> ________________________________
> > >