diff options
author | Emile Joubert <emile@rabbitmq.com> | 2013-06-13 15:00:30 +0100 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2013-06-13 15:00:30 +0100 |
commit | 340b36e06ac5697204bedea561305e40b30844ff (patch) | |
tree | 0c967215adbfc4c38370dbea22a9b1b45ed3cb6c | |
parent | 16ca31ea7c9ccc8569772e296772fc7d9b453997 (diff) | |
download | rabbitmq-server-340b36e06ac5697204bedea561305e40b30844ff.tar.gz |
Comments, gen_server-like termination reason and less unnecessary delete guarding
-rw-r--r-- | src/rabbit_amqqueue.erl | 16 | ||||
-rw-r--r-- | src/rabbit_amqqueue_process.erl | 5 |
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) -> |