summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2012-02-24 12:19:29 +0000
committerAlexandru Scvortov <alexandru@rabbitmq.com>2012-02-24 12:19:29 +0000
commit948082ce50fbaaa204f1f4337568390a822590a9 (patch)
treeb8baf3f2f9f1a8458422deacf9eb507143cb1128 /src
parent8f931704288ff3a926d4711a5c9bc3cdc9dc626d (diff)
downloadrabbitmq-server-git-948082ce50fbaaa204f1f4337568390a822590a9.tar.gz
dead-lettering to a deleted exchange outputs an error and disables dead-lettering for that queue
=WARNING REPORT==== 24-Feb-2012::12:17:18 === Dead-letter-exchange <<"dead.letter.exchange">> for queue <<"test.queue.dead.letter">> does not exist. Disabling DLX for this queue.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_amqqueue_process.erl29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index 73cd599b90..ed6ae9b96b 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -733,14 +733,29 @@ dead_letter_fun(Reason, _State) ->
gen_server2:cast(self(), {dead_letter, {Msg, AckTag}, Reason})
end.
-dead_letter_msg(Msg, AckTag, Reason,
- State = #q{publish_seqno = MsgSeqNo,
- unconfirmed_mq = UMQ,
- dlx = DLX,
- backing_queue = BQ,
- backing_queue_state = BQS}) ->
- rabbit_exchange:lookup_or_die(DLX),
+dead_letter_msg(Msg, AckTag, Reason, State = #q{dlx = undefined}) ->
+ %% Dead-lettring already disabled for this queue.
+ noreply(State);
+dead_letter_msg(Msg, AckTag, Reason, State = #q{dlx = DLX}) ->
+ case rabbit_exchange:lookup(DLX) of
+ {error, not_found} ->
+ #resource{name = QName} = qname(State),
+ #resource{name = XName} = DLX,
+ rabbit_log:warning("Dead-letter-exchange ~p for queue ~p does " ++
+ "not exist. Disabling DLX for this queue.~n",
+ [XName, QName]),
+ noreply(State#q{dlx = undefined,
+ dlx_routing_key = undefined});
+ _ ->
+ dead_letter_msg_existing_dlx(Msg, AckTag, Reason, State)
+ end.
+dead_letter_msg_existing_dlx(Msg, AckTag, Reason,
+ State = #q{publish_seqno = MsgSeqNo,
+ unconfirmed_mq = UMQ,
+ dlx = DLX,
+ backing_queue = BQ,
+ backing_queue_state = BQS}) ->
{ok, _, QPids} =
rabbit_basic:publish(
rabbit_basic:delivery(