diff options
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; |
