summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-03-10 16:39:05 +0000
committerDaniil Fedotov <dfedotov@pivotal.io>2016-10-20 14:49:52 +0100
commit80436dfaef0366d48f1e8b1293e1a12a5e922c79 (patch)
tree764b1876d9c2ff8ff983f0508fd4f442b9b035c5
parentabaa77062e27688f984ba8cb914ca69a9cb5e2e6 (diff)
downloadrabbitmq-server-git-80436dfaef0366d48f1e8b1293e1a12a5e922c79.tar.gz
Starting and restarting app
-rw-r--r--src/rabbit_msg_store_vhost_sup.erl20
-rw-r--r--src/rabbit_variable_queue.erl13
2 files changed, 25 insertions, 8 deletions
diff --git a/src/rabbit_msg_store_vhost_sup.erl b/src/rabbit_msg_store_vhost_sup.erl
index 299efdc428..a4ae8469dc 100644
--- a/src/rabbit_msg_store_vhost_sup.erl
+++ b/src/rabbit_msg_store_vhost_sup.erl
@@ -2,7 +2,7 @@
-behaviour(supervisor2).
--export([start_link/4, init/1, add_vhost/2, client_init/5, start_vhost/5]).
+-export([start_link/4, init/1, add_vhost/2, client_init/5, start_vhost/5, successfully_recovered_state/2]).
start_link(Name, Dir, ClientRefs, StartupFunState) ->
supervisor2:start_link({local, Name}, ?MODULE,
@@ -22,7 +22,6 @@ start_vhost(Name, Dir, ClientRefs, StartupFunState, VHost) ->
VHostName = get_vhost_name(Name, VHost),
VHostDir = get_vhost_dir(Dir, VHost),
ok = rabbit_file:ensure_dir(VHostDir),
- io:format("Store dir ~p~n", [VHostDir]),
rabbit_msg_store:start_link(VHostName, VHostDir,
ClientRefs, StartupFunState).
@@ -34,7 +33,6 @@ client_init(Server, Ref, MsgOnDiskFun, CloseFDsFun, VHost) ->
maybe_start_vhost(Server, VHost) ->
VHostName = get_vhost_name(Server, VHost),
Trace = try throw(42) catch 42 -> erlang:get_stacktrace() end,
- io:format("Search for ~p~n ~p~n", [VHostName, Trace]),
case whereis(VHostName) of
undefined -> add_vhost(Server, VHost);
_ -> ok
@@ -42,9 +40,19 @@ maybe_start_vhost(Server, VHost) ->
VHostName.
get_vhost_name(Name, VHost) ->
- binary_to_atom(<<(atom_to_binary(Name, utf8))/binary, VHost/binary>>, utf8).
+ VhostEncoded = encode_vhost(VHost),
+ binary_to_atom(<<(atom_to_binary(Name, utf8))/binary, "_", VhostEncoded/binary>>, utf8).
get_vhost_dir(Dir, VHost) ->
- VhostEncoded = http_uri:encode(binary_to_list(VHost)),
- filename:join([Dir, VhostEncoded]).
+ VhostEncoded = encode_vhost(VHost),
+ binary_to_list(filename:join([Dir, VhostEncoded])).
+encode_vhost(VHost) ->
+ base64:encode(VHost).
+
+successfully_recovered_state(Name, VHost) ->
+ VHostName = get_vhost_name(Name, VHost),
+ rabbit_msg_store:successfully_recovered_state(VHostName).
+
+% force_recovery
+% transform_dir \ No newline at end of file
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 6c97e85bc8..a4dc6e4c0d 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -468,12 +468,20 @@ stop() ->
ok = rabbit_queue_index:stop().
start_msg_store(Refs, StartFunState) ->
+ VHosts = rabbit_vhost:list(),
ok = rabbit_sup:start_child(?TRANSIENT_MSG_STORE, rabbit_msg_store_vhost_sup,
[?TRANSIENT_MSG_STORE, rabbit_mnesia:dir(),
undefined, {fun (ok) -> finished end, ok}]),
ok = rabbit_sup:start_child(?PERSISTENT_MSG_STORE, rabbit_msg_store_vhost_sup,
[?PERSISTENT_MSG_STORE, rabbit_mnesia:dir(),
- Refs, StartFunState]).
+ Refs, StartFunState]),
+ lists:foreach(
+ fun(VHost) ->
+ rabbit_msg_store_vhost_sup:add_vhost(?TRANSIENT_MSG_STORE, VHost),
+ rabbit_msg_store_vhost_sup:add_vhost(?PERSISTENT_MSG_STORE, VHost)
+ end,
+ VHosts),
+ ok.
stop_msg_store() ->
ok = rabbit_sup:stop_child(?PERSISTENT_MSG_STORE),
@@ -525,7 +533,8 @@ init(#amqqueue { name = QueueName, durable = IsDurable }, Terms,
{DeltaCount, DeltaBytes, IndexState} =
rabbit_queue_index:recover(
QueueName, RecoveryTerms,
- rabbit_msg_store:successfully_recovered_state(?PERSISTENT_MSG_STORE),
+ rabbit_msg_store_vhost_sup:successfully_recovered_state(
+ ?PERSISTENT_MSG_STORE, VHost),
ContainsCheckFun, MsgIdxOnDiskFun, MsgAndIdxOnDiskFun),
init(IsDurable, IndexState, DeltaCount, DeltaBytes, RecoveryTerms,
PersistentClient, TransientClient).