Skip to content

Commit

Permalink
Moved directory selection to vhost_dir function
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniil Fedotov committed Apr 21, 2016
1 parent 29333d6 commit 31a922b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 24 deletions.
43 changes: 24 additions & 19 deletions src/rabbit_msg_store_vhost_sup.erl
Original file line number Diff line number Diff line change
Expand Up @@ -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).


Expand All @@ -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
Expand Down
10 changes: 5 additions & 5 deletions src/rabbit_variable_queue.erl
Original file line number Diff line number Diff line change
Expand Up @@ -463,13 +463,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),
Expand Down Expand Up @@ -2765,7 +2765,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.

Expand Down

0 comments on commit 31a922b

Please sign in to comment.