diff options
| author | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-19 17:56:33 +0100 |
|---|---|---|
| committer | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-20 14:49:52 +0100 |
| commit | 8369950c887c817a2096a3c2fdc941e32547ebce (patch) | |
| tree | 47a0601954f885296f4a9382efe751c4ab643a79 /src | |
| parent | fd4db66c2c65b2de20b81ef89bc7a87dcea0f209 (diff) | |
| download | rabbitmq-server-git-8369950c887c817a2096a3c2fdc941e32547ebce.tar.gz | |
Allow restart of a vhost message store. purge_messages function to clean message storage (together with message indexes) for a vhost
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_msg_store_vhost_sup.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_vhost.erl | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/rabbit_msg_store_vhost_sup.erl b/src/rabbit_msg_store_vhost_sup.erl index 8e514d5066..d60004caef 100644 --- a/src/rabbit_msg_store_vhost_sup.erl +++ b/src/rabbit_msg_store_vhost_sup.erl @@ -13,7 +13,7 @@ start_link(Name, ClientRefs, StartupFunState) -> [Name, ClientRefs, StartupFunState]). init([Name, ClientRefs, StartupFunState]) -> - {ok, {{simple_one_for_one, 0, 1}, + {ok, {{simple_one_for_one, 1, 1}, [{rabbit_msg_store_vhost, {rabbit_msg_store_vhost_sup, start_vhost, [Name, ClientRefs, StartupFunState]}, transient, infinity, supervisor, [rabbit_msg_store]}]}}. diff --git a/src/rabbit_vhost.erl b/src/rabbit_vhost.erl index 45511a12b7..a277c275ed 100644 --- a/src/rabbit_vhost.erl +++ b/src/rabbit_vhost.erl @@ -24,7 +24,7 @@ set_limits/2, limits_of/1]). -export([info/1, info/2, info_all/0, info_all/1, info_all/2, info_all/3]). -export([dir/1]). - +-export([purge_messages/1]). -spec add(rabbit_types:vhost()) -> 'ok'. -spec delete(rabbit_types:vhost()) -> 'ok'. @@ -94,11 +94,18 @@ delete(VHostPath) -> with(VHostPath, fun () -> internal_delete(VHostPath) end)), ok = rabbit_event:notify(vhost_deleted, [{name, VHostPath}]), [ok = Fun() || Fun <- Funs], + purge_messages(VHostPath), + ok. + +purge_messages(VHostPath) -> VhostDir = filename:join(rabbit_mnesia:dir(), dir(VHostPath)), rabbit_log:info("Deleting vhost directory '~s'~n", [VhostDir]), + %% Message store is stopped to close file handles rabbit_variable_queue:stop_vhost_msg_store(VHostPath), ok = rabbit_file:recursive_delete([VhostDir]), - ok. + %% Second terminate is made in case message store is + %% restarted during deletion + rabbit_variable_queue:stop_vhost_msg_store(VHostPath). assert_benign(ok) -> ok; assert_benign({ok, _}) -> ok; |
