summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_msg_store.erl10
-rw-r--r--src/rabbit_tests.erl4
-rw-r--r--src/rabbit_variable_queue.erl8
3 files changed, 12 insertions, 10 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index 7dea2f94af..631005711b 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -34,8 +34,8 @@
-behaviour(gen_server2).
-export([start_link/4, write/4, read/3, contains/2, remove/2, release/2,
- sync/3, client_init/2, client_terminate/1, delete_client/2,
- successfully_recovered_state/1]).
+ sync/3, client_init/2, client_terminate/1,
+ client_delete_and_terminate/3, successfully_recovered_state/1]).
-export([sync/1, gc_done/4, set_maximum_since_use/2, gc/3]). %% internal
@@ -138,7 +138,8 @@
-spec(set_maximum_since_use/2 :: (server(), non_neg_integer()) -> 'ok').
-spec(client_init/2 :: (server(), binary()) -> client_msstate()).
-spec(client_terminate/1 :: (client_msstate()) -> 'ok').
--spec(delete_client/2 :: (server(), binary()) -> 'ok').
+-spec(client_delete_and_terminate/3 ::
+ (client_msstate(), server(), binary()) -> 'ok').
-spec(successfully_recovered_state/1 :: (server()) -> boolean()).
-spec(gc/3 :: (non_neg_integer(), non_neg_integer(),
@@ -377,7 +378,8 @@ client_terminate(CState) ->
close_all_handles(CState),
ok.
-delete_client(Server, Ref) ->
+client_delete_and_terminate(CState, Server, Ref) ->
+ ok = client_terminate(CState),
ok = gen_server2:call(Server, {delete_client, Ref}, infinity).
successfully_recovered_state(Server) ->
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 630483da74..ec0387c639 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -1598,8 +1598,8 @@ queue_index_publish(SeqIds, Persistent, Qi) ->
Guid, MSCStateN),
{QiM, [{SeqId, Guid} | SeqIdsGuidsAcc], MSCStateM}
end, {Qi, [], rabbit_msg_store:client_init(MsgStore, Ref)}, SeqIds),
- ok = rabbit_msg_store:delete_client(MsgStore, Ref),
- ok = rabbit_msg_store:client_terminate(MSCStateEnd),
+ ok = rabbit_msg_store:client_delete_and_terminate(
+ MSCStateEnd, MsgStore, Ref),
{A, B}.
verify_read_with_published(_Delivered, _Persistent, [], _) ->
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 35a6ff7825..b3ba3f17bf 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -403,12 +403,12 @@ delete_and_terminate(State) ->
IndexState1 = rabbit_queue_index:delete_and_terminate(IndexState),
case MSCStateP of
undefined -> ok;
- _ -> rabbit_msg_store:delete_client(
- ?PERSISTENT_MSG_STORE, PRef),
+ _ -> rabbit_msg_store:client_delete_and_terminate(
+ MSCStateP, ?PERSISTENT_MSG_STORE, PRef),
rabbit_msg_store:client_terminate(MSCStateP)
end,
- rabbit_msg_store:delete_client(?TRANSIENT_MSG_STORE, TRef),
- rabbit_msg_store:client_terminate(MSCStateT),
+ rabbit_msg_store:client_delete_and_terminate(
+ MSCStateT, ?TRANSIENT_MSG_STORE, TRef),
a(State2 #vqstate { index_state = IndexState1,
msg_store_clients = undefined }).