summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2013-06-13 15:00:30 +0100
committerEmile Joubert <emile@rabbitmq.com>2013-06-13 15:00:30 +0100
commit340b36e06ac5697204bedea561305e40b30844ff (patch)
tree0c967215adbfc4c38370dbea22a9b1b45ed3cb6c
parent16ca31ea7c9ccc8569772e296772fc7d9b453997 (diff)
downloadrabbitmq-server-340b36e06ac5697204bedea561305e40b30844ff.tar.gz
Comments, gen_server-like termination reason and less unnecessary delete guarding
-rw-r--r--src/rabbit_amqqueue.erl16
-rw-r--r--src/rabbit_amqqueue_process.erl5
2 files changed, 10 insertions, 11 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index b94f08f6..e0fbaf77 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -577,16 +577,14 @@ resume(QPid, ChPid) -> delegate:cast(QPid, {resume, ChPid}).
flush_all(QPids, ChPid) -> delegate:cast(QPids, {flush, ChPid}).
-%% 'guarded' delete prevents unnecessary writes to the mnesia disk log
-guarded_delete(Table, QueueName) ->
- case mnesia:wread({Table, QueueName}) of
- [] -> ok;
- [_] -> ok = mnesia:delete({Table, QueueName})
- end.
-
internal_delete1(QueueName) ->
- guarded_delete(rabbit_durable_queue, QueueName),
- guarded_delete(rabbit_queue, QueueName),
+ ok = mnesia:delete({rabbit_queue, QueueName}),
+ %% this 'guarded' delete prevents unnecessary writes to the mnesia
+ %% disk log
+ case mnesia:wread({rabbit_durable_queue, QueueName}) of
+ [] -> ok;
+ [_] -> ok = mnesia:delete({rabbit_durable_queue, QueueName})
+ end,
%% we want to execute some things, as decided by rabbit_exchange,
%% after the transaction.
rabbit_binding:remove_for_destination(QueueName).
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index 4b0e0b89..7cc4a51a 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -153,8 +153,9 @@ init_state(Q) ->
terminate(shutdown = R, State = #q{backing_queue = BQ}) ->
terminate_shutdown(fun (BQS) -> BQ:terminate(R, BQS) end, State);
-terminate({shutdown, missing_owner = R}, State) ->
- terminate_shutdown(terminate_delete(false, R, State), State);
+terminate({shutdown, missing_owner} = Reason, State) ->
+ %% if the owner was missing then there will be no queue, so don't emit stats
+ terminate_shutdown(terminate_delete(false, Reason, State), State);
terminate({shutdown, _} = R, State = #q{backing_queue = BQ}) ->
terminate_shutdown(fun (BQS) -> BQ:terminate(R, BQS) end, State);
terminate(Reason, State) ->