<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi all,<o:p></o:p></p><p class=MsoNormal> Our team installed RabbitMQ 3.0.4 and I’m trying to upgrade it to latest 3.2.3. However we encounter an unexpected change from RabbitMQ. In 3.0.4, 404 error thrown when unbind an non-existed binding but if try to unbind an non-existed binding from in RabbitMQ 3.2.3, it throws 541 error. Is this change expected or an issue? <o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>In our applications, we may unbind a binding multiple times. The first attempt succeeds and we expect the following attempts throw 404. We catch the 404 exception and do something later. It works well in 3.0.4 but unlucky in 3.2.3. If it’s an issue of 3.2.3 I will wait for an newer version. If not ,we will have to change our code or just use 3.0.4.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> What’s more interesting is that only when the exchange type is “topic”. When the type is “fanout” or ”direct”, the expected 404 thrown. I wrote some python test codes today to verify it:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><i>#!/usr/bin/env python<o:p></o:p></i></p><p class=MsoNormal><i>import pika<o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><i>connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))<o:p></o:p></i></p><p class=MsoNormal><i>channel = connection.channel()<o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><i>exchange_name = 'py_test_exchange'<o:p></o:p></i></p><p class=MsoNormal><i>queue_name = 'py_test_queue'<o:p></o:p></i></p><p class=MsoNormal><i>routing_key = 'black'<o:p></o:p></i></p><p class=MsoNormal><i>exchange_type=<span style='color:red'>'topic'</span><o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><i>channel.exchange_declare(exchange=exchange_name,type=exchange_type)<o:p></o:p></i></p><p class=MsoNormal><i>channel.queue_declare(queue=queue_name)<o:p></o:p></i></p><p class=MsoNormal><i>channel.queue_bind(exchange=exchange_name,queue=queue_name,routing_key=routing_key)<o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><i>channel.queue_unbind(exchange=exchange_name,queue=queue_name,routing_key=routing_key)<o:p></o:p></i></p><p class=MsoNormal><i>channel.queue_unbind(exchange=exchange_name,queue=queue_name,routing_key=routing_key)<o:p></o:p></i></p><p class=MsoNormal><i><o:p> </o:p></i></p><p class=MsoNormal><i>channel.queue_delete(queue=queue_name)<o:p></o:p></i></p><p class=MsoNormal><i>channel.exchange_delete(exchange=exchange_name)<o:p></o:p></i></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>And when I run this code, it says “pika.exceptions.ChannelClosed: (541, 'INTERNAL_ERROR')”. And from the RabbitMQ logs(it says ‘badmatch’ probably because the binding doesn’t exist): <o:p></o:p></p><p class=MsoNormal><br>=ERROR REPORT==== 17-Feb-2014::14:37:54 ===<o:p></o:p></p><p class=MsoNormal>AMQP connection <0.12741.0> (running), channel 1 - error:<o:p></o:p></p><p class=MsoNormal>{{error,<o:p></o:p></p><p class=MsoNormal> {{badmatch,{error,[{root,none}],["black"]}},<o:p></o:p></p><p class=MsoNormal> [{rabbit_exchange_type_topic,follow_down_get_path,2,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_exchange_type_topic.erl"},{line,139}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_exchange_type_topic,'-remove_bindings/3-lc$^1/1-1-',1,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_exchange_type_topic.erl"},{line,81}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_exchange_type_topic,remove_bindings,3,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_exchange_type_topic.erl"},{line,79}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_binding,x_callback,4,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_binding.erl"},{line,542}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_binding,'-process_deletions/1-fun-0-',2,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_binding.erl"},{line,524}]},<o:p></o:p></p><p class=MsoNormal> {dict,map_bucket,2,[{file,"dict.erl"},{line,460}]},<o:p></o:p></p><p class=MsoNormal> {dict,map_bkt_list,2,[{file,"dict.erl"},{line,456}]},<o:p></o:p></p><p class=MsoNormal> {dict,map_bkt_list,2,[{file,"dict.erl"},{line,456}]}]}},<o:p></o:p></p><p class=MsoNormal>[{rabbit_misc,execute_mnesia_transaction,1,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_misc.erl"},{line,509}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_misc,execute_mnesia_tx_with_tail,1,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_misc.erl"},{line,531}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_channel,binding_action,9,<o:p></o:p></p><p class=MsoNormal> [{file,"src/rabbit_channel.erl"},{line,1279}]},<o:p></o:p></p><p class=MsoNormal> {rabbit_channel,handle_cast,2,[{file,"src/rabbit_channel.erl"},{line,274}]},<o:p></o:p></p><p class=MsoNormal> {gen_server2,handle_msg,2,[{file,"src/gen_server2.erl"},{line,934}]},<o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'> {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}<o:p></o:p></p><p class=MsoNormal>Any comment will be appreciated. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b><span style='color:#215868'>Thanks<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='color:#215868'>Junbo Wang<o:p></o:p></span></b></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>