summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2017-07-28 15:32:02 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2017-07-31 12:18:00 +0100
commite9fb778418ebb58e02079d78b41185fc05df61bd (patch)
tree030e4d73c3948e4e812d7088f27b8e50d095ca54 /src
parent7db2b7f7310248f229d91ccd31fa583c254bc380 (diff)
downloadrabbitmq-server-git-e9fb778418ebb58e02079d78b41185fc05df61bd.tar.gz
Delete vhost data even if the vhost supervisor is not running.
Of a vhost supervisor is down it can still be deleted and with all the data. This is useful if an operator wants to delete a bad vhost.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_vhost_sup_sup.erl12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/rabbit_vhost_sup_sup.erl b/src/rabbit_vhost_sup_sup.erl
index 62e3ec0d9c..93c26d4e0f 100644
--- a/src/rabbit_vhost_sup_sup.erl
+++ b/src/rabbit_vhost_sup_sup.erl
@@ -72,7 +72,7 @@ delete_on_all_nodes(VHost) ->
ok.
stop_and_delete_vhost(VHost) ->
- case lookup_vhost_sup_record(VHost) of
+ StopResult = case lookup_vhost_sup_record(VHost) of
not_found -> ok;
#vhost_sup{wrapper_pid = WrapperPid,
vhost_sup_pid = VHostSupPid} ->
@@ -84,13 +84,15 @@ stop_and_delete_vhost(VHost) ->
[VHostSupPid, VHost]),
case supervisor2:terminate_child(?MODULE, WrapperPid) of
ok ->
- ets:delete(?MODULE, VHost),
- ok = rabbit_vhost:delete_storage(VHost);
+ true = ets:delete(?MODULE, VHost),
+ ok;
Other ->
Other
end
end
- end.
+ end,
+ ok = rabbit_vhost:delete_storage(VHost),
+ StopResult.
%% We take an optimistic approach whan stopping a remote VHost supervisor.
stop_and_delete_vhost(VHost, Node) when Node == node(self()) ->
@@ -212,7 +214,7 @@ save_vhost_process(VHost, VHostProcessPid) ->
{#vhost_sup.vhost_process_pid, VHostProcessPid}),
ok.
--spec lookup_vhost_sup_record(rabbit_types:vhost()) -> #vhost_sup{}.
+-spec lookup_vhost_sup_record(rabbit_types:vhost()) -> #vhost_sup{} | not_found.
lookup_vhost_sup_record(VHost) ->
case ets:lookup(?MODULE, VHost) of
[] -> not_found;