summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-04-21 16:22:02 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2016-10-20 14:49:52 +0100
commit93ba24b4327ab66c288a10fcfe1d131e53dcd477 (patch)
tree77b2c30a7d2266cffa327c66f2d550a00728297d
parentd1f4a9d302c2ad319c58d7aa8aa21e1bc90aa4b5 (diff)
downloadrabbitmq-server-git-93ba24b4327ab66c288a10fcfe1d131e53dcd477.tar.gz
Moved directory selection to vhost_dir function
-rw-r--r--src/rabbit_msg_store_vhost_sup.erl43
-rw-r--r--src/rabbit_variable_queue.erl10
2 files changed, 29 insertions, 24 deletions
diff --git a/src/rabbit_msg_store_vhost_sup.erl b/src/rabbit_msg_store_vhost_sup.erl
index a4ae8469dc..a33ffed560 100644
--- a/src/rabbit_msg_store_vhost_sup.erl
+++ b/src/rabbit_msg_store_vhost_sup.erl
@@ -2,27 +2,30 @@
-behaviour(supervisor2).
--export([start_link/4, init/1, add_vhost/2, client_init/5, start_vhost/5, successfully_recovered_state/2]).
+-export([start_link/3, init/1, add_vhost/2, client_init/5, successfully_recovered_state/2]).
-start_link(Name, Dir, ClientRefs, StartupFunState) ->
+%% Internal
+-export([start_vhost/4]).
+
+start_link(Name, ClientRefs, StartupFunState) ->
supervisor2:start_link({local, Name}, ?MODULE,
- [Name, Dir, ClientRefs, StartupFunState]).
+ [Name, ClientRefs, StartupFunState]).
-init([Name, Dir, ClientRefs, StartupFunState]) ->
+init([Name, ClientRefs, StartupFunState]) ->
{ok, {{simple_one_for_one, 0, 1},
- [{rabbit_msg_store_vhost, {rabbit_msg_store_vhost_sup, start_vhost,
- [Name, Dir, ClientRefs, StartupFunState]},
+ [{rabbit_msg_store_vhost, {rabbit_msg_store_vhost_sup, start_vhost,
+ [Name, ClientRefs, StartupFunState]},
transient, infinity, supervisor, [rabbit_msg_store]}]}}.
add_vhost(Name, VHost) ->
supervisor2:start_child(Name, [VHost]).
-start_vhost(Name, Dir, ClientRefs, StartupFunState, VHost) ->
- VHostName = get_vhost_name(Name, VHost),
- VHostDir = get_vhost_dir(Dir, VHost),
+start_vhost(Name, ClientRefs, StartupFunState, VHost) ->
+ VHostName = vhost_store_name(Name, VHost),
+ VHostDir = vhost_store_dir(VHost),
ok = rabbit_file:ensure_dir(VHostDir),
- rabbit_msg_store:start_link(VHostName, VHostDir,
+ rabbit_msg_store:start_link(VHostName, VHostDir,
ClientRefs, StartupFunState).
@@ -31,27 +34,29 @@ client_init(Server, Ref, MsgOnDiskFun, CloseFDsFun, VHost) ->
rabbit_msg_store:client_init(VHostName, Ref, MsgOnDiskFun, CloseFDsFun).
maybe_start_vhost(Server, VHost) ->
- VHostName = get_vhost_name(Server, VHost),
- Trace = try throw(42) catch 42 -> erlang:get_stacktrace() end,
+ VHostName = vhost_store_name(Server, VHost),
case whereis(VHostName) of
undefined -> add_vhost(Server, VHost);
_ -> ok
end,
VHostName.
-get_vhost_name(Name, VHost) ->
- VhostEncoded = encode_vhost(VHost),
- binary_to_atom(<<(atom_to_binary(Name, utf8))/binary, "_", VhostEncoded/binary>>, utf8).
+vhost_store_name(Name, VHost) ->
+ VhostEncoded = encode_vhost_name(VHost),
+ binary_to_atom(<<(atom_to_binary(Name, utf8))/binary, "_",
+ VhostEncoded/binary>>,
+ utf8).
-get_vhost_dir(Dir, VHost) ->
- VhostEncoded = encode_vhost(VHost),
+vhost_store_dir(VHost) ->
+ Dir = rabbit_mnesia:dir(),
+ VhostEncoded = encode_vhost_name(VHost),
binary_to_list(filename:join([Dir, VhostEncoded])).
-encode_vhost(VHost) ->
+encode_vhost_name(VHost) ->
base64:encode(VHost).
successfully_recovered_state(Name, VHost) ->
- VHostName = get_vhost_name(Name, VHost),
+ VHostName = vhost_store_name(Name, VHost),
rabbit_msg_store:successfully_recovered_state(VHostName).
% force_recovery
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index f87205532c..9427db78c4 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -479,13 +479,13 @@ stop() ->
ok = rabbit_queue_index:stop().
start_msg_store(Refs, StartFunState) ->
- VHosts = rabbit_vhost:list(),
ok = rabbit_sup:start_child(?TRANSIENT_MSG_STORE_SUP, rabbit_msg_store_vhost_sup,
- [?TRANSIENT_MSG_STORE_SUP, rabbit_mnesia:dir(),
+ [?TRANSIENT_MSG_STORE_SUP,
undefined, {fun (ok) -> finished end, ok}]),
ok = rabbit_sup:start_child(?PERSISTENT_MSG_STORE_SUP, rabbit_msg_store_vhost_sup,
- [?PERSISTENT_MSG_STORE_SUP, rabbit_mnesia:dir(),
- Refs, StartFunState]),
+ [?PERSISTENT_MSG_STORE_SUP, Refs, StartFunState]),
+ %% Start message store for all known vhosts
+ VHosts = rabbit_vhost:list(),
lists:foreach(
fun(VHost) ->
rabbit_msg_store_vhost_sup:add_vhost(?TRANSIENT_MSG_STORE_SUP, VHost),
@@ -2792,7 +2792,7 @@ start_new_store_sup() ->
% Start persistent store sup without recovery.
ok = rabbit_sup:start_child(?PERSISTENT_MSG_STORE_SUP,
rabbit_msg_store_vhost_sup,
- [?PERSISTENT_MSG_STORE_SUP, rabbit_mnesia:dir(),
+ [?PERSISTENT_MSG_STORE_SUP,
undefined, {fun (ok) -> finished end, ok}]),
?PERSISTENT_MSG_STORE_SUP.