diff options
| author | Daniil Fedotov <dfedotov@pivotal.io> | 2016-03-10 16:39:05 +0000 |
|---|---|---|
| committer | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-20 14:49:52 +0100 |
| commit | 80436dfaef0366d48f1e8b1293e1a12a5e922c79 (patch) | |
| tree | 764b1876d9c2ff8ff983f0508fd4f442b9b035c5 | |
| parent | abaa77062e27688f984ba8cb914ca69a9cb5e2e6 (diff) | |
| download | rabbitmq-server-git-80436dfaef0366d48f1e8b1293e1a12a5e922c79.tar.gz | |
Starting and restarting app
| -rw-r--r-- | src/rabbit_msg_store_vhost_sup.erl | 20 | ||||
| -rw-r--r-- | src/rabbit_variable_queue.erl | 13 |
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). |
