summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2016-11-11 20:08:38 +0300
committerMichael Klishin <mklishin@pivotal.io>2016-11-11 21:21:20 +0300
commiteea4fc3fd423d2b5c624ecf440e7bfcbed6ff044 (patch)
tree86afa8e98a2eba0e8828eff035e24eb48c13fa76 /src
parentcc75e5672ad23b63fb7c1f93e263b706a95d0cf6 (diff)
downloadrabbitmq-server-git-eea4fc3fd423d2b5c624ecf440e7bfcbed6ff044.tar.gz
Use a fixed size encoding fn for vhost directory names
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_msg_store_vhost_sup.erl10
-rw-r--r--src/rabbit_queue_index.erl2
-rw-r--r--src/rabbit_vhost.erl9
3 files changed, 11 insertions, 10 deletions
diff --git a/src/rabbit_msg_store_vhost_sup.erl b/src/rabbit_msg_store_vhost_sup.erl
index 5784f199ca..06034819b4 100644
--- a/src/rabbit_msg_store_vhost_sup.erl
+++ b/src/rabbit_msg_store_vhost_sup.erl
@@ -73,11 +73,6 @@ vhost_store_pid(Name, VHost) ->
cleanup_vhost_store(Name, VHost, Pid) ->
ets:delete_object(Name, {VHost, Pid}).
-vhost_store_dir(VHost) ->
- Dir = rabbit_mnesia:dir(),
- Base64EncodedName = rabbit_vhost:dir(VHost),
- binary_to_list(filename:join([Dir, Base64EncodedName])).
-
successfully_recovered_state(Name, VHost) ->
case vhost_store_pid(Name, VHost) of
no_pid ->
@@ -85,3 +80,8 @@ successfully_recovered_state(Name, VHost) ->
Pid when is_pid(Pid) ->
rabbit_msg_store:successfully_recovered_state(Pid)
end.
+
+vhost_store_dir(VHost) ->
+ Dir = rabbit_mnesia:dir(),
+ EncodedName = list_to_binary(rabbit_vhost:vhost_name_to_dir_name(VHost)),
+ binary_to_list(filename:join([Dir, EncodedName])).
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index d19694403c..8bd44cb1ed 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -517,7 +517,7 @@ blank_state_dir(Dir) ->
queue_dir(#resource{ virtual_host = VHost } = QueueName) ->
%% Queue directory is {node_database_dir}/{vhost}/queues/{queue}
- filename:join([queues_base_dir(), rabbit_vhost:dir(VHost),
+ filename:join([queues_base_dir(), rabbit_vhost:vhost_name_to_dir_name(VHost),
"queues", queue_name_to_dir_name(QueueName)]).
blank_state_dir_funs(Dir, OnSyncFun, OnSyncMsgFun) ->
diff --git a/src/rabbit_vhost.erl b/src/rabbit_vhost.erl
index 2f323fc41b..e6df4e9364 100644
--- a/src/rabbit_vhost.erl
+++ b/src/rabbit_vhost.erl
@@ -23,7 +23,7 @@
-export([add/1, delete/1, exists/1, list/0, with/2, assert/1, update/2,
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([vhost_name_to_dir_name/1]).
-export([purge_messages/1]).
-spec add(rabbit_types:vhost()) -> 'ok'.
@@ -97,7 +97,7 @@ delete(VHostPath) ->
ok.
purge_messages(VHostPath) ->
- VhostDir = filename:join(rabbit_mnesia:dir(), dir(VHostPath)),
+ VhostDir = filename:join(rabbit_mnesia:dir(), vhost_name_to_dir_name(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),
@@ -198,5 +198,6 @@ info_all(Items, Ref, AggregatorPid) ->
rabbit_control_misc:emitting_map(
AggregatorPid, Ref, fun(VHost) -> info(VHost, Items) end, list()).
-dir(Vhost) ->
- base64:encode(Vhost). \ No newline at end of file
+vhost_name_to_dir_name(Vhost) ->
+ <<Num:128>> = erlang:md5(term_to_binary(Vhost)),
+ rabbit_misc:format("~.36B", [Num]).