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 | fcb1066dd0220e125674127321c775f79ed8fe1c (patch) | |
| tree | 0c967215adbfc4c38370dbea22a9b1b45ed3cb6c | |
| parent | 2c4e8b98d50d95eb105d4718819110cdd1ed30dd (diff) | |
| download | rabbitmq-server-git-fcb1066dd0220e125674127321c775f79ed8fe1c.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 b94f08f6fa..e0fbaf77df 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 4b0e0b8967..7cc4a51afe 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) -> |
