summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_amqqueue_process.erl15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index b85bcdcb63..8557cb947f 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -121,13 +121,14 @@ init([Q]) ->
rate_timer_ref = undefined}, hibernate,
{backoff, ?HIBERNATE_AFTER_MIN, ?HIBERNATE_AFTER_MIN, ?DESIRED_HIBERNATE}}.
-terminate(shutdown, State) ->
- terminate_shutdown(terminate, State);
-terminate({shutdown, _}, State) ->
- terminate_shutdown(terminate, State);
-terminate(_Reason, State) ->
+terminate(shutdown, State = #q{backing_queue = BQ}) ->
+ terminate_shutdown(fun (BQS) -> BQ:terminate(BQS) end, State);
+terminate({shutdown, _}, State = #q{backing_queue = BQ}) ->
+ terminate_shutdown(fun (BQS) -> BQ:terminate(BQS) end, State);
+terminate(_Reason, State = #q{backing_queue = BQ}) ->
%% FIXME: How do we cancel active subscriptions?
- State1 = terminate_shutdown(delete_and_terminate, State),
+ State1 = terminate_shutdown(fun (BQS) -> BQ:delete_and_terminate(BQS) end,
+ State),
ok = rabbit_amqqueue:internal_delete(qname(State1)).
code_change(_OldVsn, State, _Extra) ->
@@ -148,7 +149,7 @@ terminate_shutdown(Fun, State = #q{backing_queue = BQ,
BQ:tx_rollback(Txn, BQSN),
BQSN1
end, BQS, all_ch_record()),
- State#q{backing_queue_state = BQ:Fun(BQS1)}
+ State#q{backing_queue_state = Fun(BQS1)}
end.
reply(Reply, NewState) ->