diff options
author | Emile Joubert <emile@rabbitmq.com> | 2013-06-13 13:47:08 +0100 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2013-06-13 13:47:08 +0100 |
commit | 16ca31ea7c9ccc8569772e296772fc7d9b453997 (patch) | |
tree | d8a87cd167f153ca739032111ceea37976fa7da7 | |
parent | 23637ac030e38d705ef00c2687e5e316b89913cc (diff) | |
download | rabbitmq-server-16ca31ea7c9ccc8569772e296772fc7d9b453997.tar.gz |
Refactor
-rw-r--r-- | src/rabbit_amqqueue_process.erl | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl index 45a45dba..4b0e0b89 100644 --- a/src/rabbit_amqqueue_process.erl +++ b/src/rabbit_amqqueue_process.erl @@ -153,24 +153,26 @@ 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}, State) -> - terminate(missing_owner, State); +terminate({shutdown, missing_owner = R}, State) -> + terminate_shutdown(terminate_delete(false, R, State), State); terminate({shutdown, _} = R, State = #q{backing_queue = BQ}) -> terminate_shutdown(fun (BQS) -> BQ:terminate(R, BQS) end, State); -terminate(Reason, State = #q{q = #amqqueue{name = QName}, - backing_queue = BQ}) -> - terminate_shutdown( - fun (BQS) -> - BQS1 = BQ:delete_and_terminate(Reason, BQS), - %% don't care if the internal delete doesn't return 'ok'. - if Reason =/= missing_owner -> - rabbit_event:if_enabled(State, #q.stats_timer, - fun() -> emit_stats(State) end); - true -> ok - end, - rabbit_amqqueue:internal_delete(QName), - BQS1 - end, State). +terminate(Reason, State) -> + terminate_shutdown(terminate_delete(true, Reason, State), State). + +terminate_delete(EmitStats, Reason, + State = #q{q = #amqqueue{name = QName}, + backing_queue = BQ}) -> + fun (BQS) -> + BQS1 = BQ:delete_and_terminate(Reason, BQS), + %% don't care if the internal delete doesn't return 'ok'. + if EmitStats -> rabbit_event:if_enabled(State, #q.stats_timer, + fun() -> emit_stats(State) end); + true -> ok + end, + rabbit_amqqueue:internal_delete(QName), + BQS1 + end. code_change(_OldVsn, State, _Extra) -> {ok, State}. |