summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-10-19 14:45:52 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2016-10-20 14:49:52 +0100
commit4f12ebeb53c72d25ecb9f1b5bf0feda1fcf4523f (patch)
tree9870befe3201e2e4cc7b41cd11d43cb89b5d058a /src
parente6c76fd377c92cd9c4e1cdd6ab6ed6da785a9271 (diff)
downloadrabbitmq-server-git-4f12ebeb53c72d25ecb9f1b5bf0feda1fcf4523f.tar.gz
Tests for per-vhost message store. Stop vhost message store when deleting vhost
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_msg_store_vhost_sup.erl10
-rw-r--r--src/rabbit_variable_queue.erl8
-rw-r--r--src/rabbit_vhost.erl6
3 files changed, 19 insertions, 5 deletions
diff --git a/src/rabbit_msg_store_vhost_sup.erl b/src/rabbit_msg_store_vhost_sup.erl
index 834b9cfb04..8e514d5066 100644
--- a/src/rabbit_msg_store_vhost_sup.erl
+++ b/src/rabbit_msg_store_vhost_sup.erl
@@ -2,7 +2,8 @@
-behaviour(supervisor2).
--export([start_link/3, init/1, add_vhost/2, client_init/5, successfully_recovered_state/2]).
+-export([start_link/3, init/1, add_vhost/2, delete_vhost/2,
+ client_init/5, successfully_recovered_state/2]).
%% Internal
-export([start_vhost/4]).
@@ -28,6 +29,13 @@ start_vhost(Name, ClientRefs, StartupFunState, VHost) ->
rabbit_msg_store:start_link(VHostName, VHostDir,
ClientRefs, StartupFunState).
+delete_vhost(Name, VHost) ->
+ VHostName = vhost_store_name(Name, VHost),
+ case whereis(VHostName) of
+ undefined -> ok;
+ Pid -> supervisor2:terminate_child(Name, Pid)
+ end,
+ ok.
client_init(Server, Ref, MsgOnDiskFun, CloseFDsFun, VHost) ->
VHostName = maybe_start_vhost(Server, VHost),
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 9427db78c4..45d9f97792 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -34,6 +34,7 @@
-export([start_msg_store/2, stop_msg_store/0, init/6]).
-export([move_messages_to_vhost_store/0]).
+-export([stop_vhost_msg_store/1]).
-include_lib("stdlib/include/qlc.hrl").
%%----------------------------------------------------------------------------
@@ -460,8 +461,6 @@
%% Public API
%%----------------------------------------------------------------------------
-
-
start(DurableQueues) ->
{AllTerms, StartFunState} = rabbit_queue_index:start(DurableQueues),
start_msg_store(
@@ -498,6 +497,11 @@ stop_msg_store() ->
ok = rabbit_sup:stop_child(?PERSISTENT_MSG_STORE_SUP),
ok = rabbit_sup:stop_child(?TRANSIENT_MSG_STORE_SUP).
+stop_vhost_msg_store(VHost) ->
+ rabbit_msg_store_vhost_sup:delete_vhost(?TRANSIENT_MSG_STORE_SUP, VHost),
+ rabbit_msg_store_vhost_sup:delete_vhost(?PERSISTENT_MSG_STORE_SUP, VHost),
+ ok.
+
init(Queue, Recover, Callback) ->
init(
Queue, Recover, Callback,
diff --git a/src/rabbit_vhost.erl b/src/rabbit_vhost.erl
index ddcd69049d..45511a12b7 100644
--- a/src/rabbit_vhost.erl
+++ b/src/rabbit_vhost.erl
@@ -94,8 +94,10 @@ delete(VHostPath) ->
with(VHostPath, fun () -> internal_delete(VHostPath) end)),
ok = rabbit_event:notify(vhost_deleted, [{name, VHostPath}]),
[ok = Fun() || Fun <- Funs],
- rabbit_file:recursive_delete([filename:join(rabbit_mnesia:dir(),
- VHostPath)]),
+ VhostDir = filename:join(rabbit_mnesia:dir(), dir(VHostPath)),
+ rabbit_log:info("Deleting vhost directory '~s'~n", [VhostDir]),
+ rabbit_variable_queue:stop_vhost_msg_store(VHostPath),
+ ok = rabbit_file:recursive_delete([VhostDir]),
ok.
assert_benign(ok) -> ok;