diff options
| author | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-19 14:45:52 +0100 |
|---|---|---|
| committer | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-20 14:49:52 +0100 |
| commit | 4f12ebeb53c72d25ecb9f1b5bf0feda1fcf4523f (patch) | |
| tree | 9870befe3201e2e4cc7b41cd11d43cb89b5d058a /src | |
| parent | e6c76fd377c92cd9c4e1cdd6ab6ed6da785a9271 (diff) | |
| download | rabbitmq-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.erl | 10 | ||||
| -rw-r--r-- | src/rabbit_variable_queue.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_vhost.erl | 6 |
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; |
