summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2013-06-13 13:47:08 +0100
committerEmile Joubert <emile@rabbitmq.com>2013-06-13 13:47:08 +0100
commit16ca31ea7c9ccc8569772e296772fc7d9b453997 (patch)
treed8a87cd167f153ca739032111ceea37976fa7da7
parent23637ac030e38d705ef00c2687e5e316b89913cc (diff)
downloadrabbitmq-server-16ca31ea7c9ccc8569772e296772fc7d9b453997.tar.gz
Refactor
-rw-r--r--src/rabbit_amqqueue_process.erl34
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}.