summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <hairyhum@gmail.com>2019-05-15 12:09:21 -0400
committerDaniil Fedotov <hairyhum@gmail.com>2019-05-15 12:09:21 -0400
commit7dd47cb7f3f49b25171d1ce860e431d8fab22175 (patch)
treecc0066e7e5fe092dbad4499d35e0cd8f84cc7a5f /src
parent29935dbcdd786a22d327f65857eda16a8fd5804a (diff)
downloadrabbitmq-server-git-rabbit_data_dir.tar.gz
Create rabbit_data module to extract data dir configuration.rabbit_data_dir
Diffstat (limited to 'src')
-rw-r--r--src/rabbit.erl6
-rw-r--r--src/rabbit_data.erl61
-rw-r--r--src/rabbit_disk_monitor.erl7
-rw-r--r--src/rabbit_guid.erl2
-rw-r--r--src/rabbit_mnesia.erl5
-rw-r--r--src/rabbit_mnesia_rename.erl20
-rw-r--r--src/rabbit_msg_store.erl4
-rw-r--r--src/rabbit_node_monitor.erl6
-rw-r--r--src/rabbit_plugins.erl22
-rw-r--r--src/rabbit_policy.erl3
-rw-r--r--src/rabbit_queue_index.erl10
-rw-r--r--src/rabbit_recovery_terms.erl9
-rw-r--r--src/rabbit_upgrade.erl10
-rw-r--r--src/rabbit_variable_queue.erl13
-rw-r--r--src/rabbit_version.erl4
-rw-r--r--src/rabbit_vhost.erl3
16 files changed, 116 insertions, 69 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 4a974fd682..d51da892a5 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -852,7 +852,8 @@ status() ->
{enabled_plugin_file, rabbit_plugins:enabled_plugins_file()}],
S6 = [{config_files, config_files()},
{log_files, log_locations()},
- {data_directory, rabbit_mnesia:dir()}],
+ %% TODO: list all dirs
+ {data_directory, rabbit_data:dir()}],
Totals = case rabbit:is_running() of
true ->
[{virtual_host_count, rabbit_vhost:count()},
@@ -1196,7 +1197,8 @@ log_banner() ->
{"cookie hash", rabbit_nodes:cookie_hash()},
{"log(s)", FirstLog}] ++
OtherLogs ++
- [{"database dir", rabbit_mnesia:dir()}],
+ %% TODO: list all dirs
+ [{"database dir", rabbit_data:dir()}],
DescrLen = 1 + lists:max([length(K) || {K, _V} <- Settings]),
Format = fun (K, V) ->
rabbit_misc:format(
diff --git a/src/rabbit_data.erl b/src/rabbit_data.erl
new file mode 100644
index 0000000000..2af8d871ee
--- /dev/null
+++ b/src/rabbit_data.erl
@@ -0,0 +1,61 @@
+-module(rabbit_data).
+
+-export([dir/0,
+ mnesia_dir/0,
+ metadata_dir/0,
+ message_store_dir/0,
+ vhosts_store_dir/0,
+ quorum_queues_dir/0]).
+-export([metadata_file/1]).
+-export([plugins_expand_dir/0, plugins_dir/0, enabled_plugins_file/0]).
+
+dir() ->
+ mnesia_dir().
+
+mnesia_dir() ->
+ mnesia:system_info(directory).
+
+metadata_dir() ->
+ mnesia_dir().
+
+message_store_dir() ->
+ filename:join(mnesia_dir(), "msg_stores").
+
+vhosts_store_dir() ->
+ filename:join(message_store_dir(), "vhosts").
+
+quorum_queues_dir() ->
+ filename:join(mnesia_dir(), "quorum").
+
+metadata_file(FileName) when is_list(FileName); is_binary(FileName) ->
+ filename:join(metadata_dir(), FileName).
+
+upper_level_file(FileName) ->
+ filename:join(dir(), FileName).
+
+-spec plugins_expand_dir() -> file:filename().
+plugins_expand_dir() ->
+ case application:get_env(rabbit, plugins_expand_dir) of
+ {ok, ExpandDir} ->
+ ExpandDir;
+ _ ->
+ upper_level_file("plugins_expand_dir")
+ end.
+
+-spec plugins_dir() -> file:filename().
+plugins_dir() ->
+ case application:get_env(rabbit, plugins_dir) of
+ {ok, PluginsDistDir} ->
+ PluginsDistDir;
+ _ ->
+ upper_level_file("plugins_dir_stub")
+ end.
+
+-spec enabled_plugins_file() -> file:filename().
+enabled_plugins_file() ->
+ case application:get_env(rabbit, enabled_plugins_file) of
+ {ok, Val} ->
+ Val;
+ _ ->
+ upper_level_file("enabled_plugins")
+ end.
diff --git a/src/rabbit_disk_monitor.erl b/src/rabbit_disk_monitor.erl
index 4e5e3d2a28..c92a7bf05a 100644
--- a/src/rabbit_disk_monitor.erl
+++ b/src/rabbit_disk_monitor.erl
@@ -130,7 +130,9 @@ start_link(Args) ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [Args], []).
init([Limit]) ->
- Dir = dir(),
+ % the partition / drive containing this directory will be monitored
+ %% TODO: use multiple dirs
+ Dir = rabbit_data:dir(),
{ok, Retries} = application:get_env(rabbit, disk_monitor_failure_retries),
{ok, Interval} = application:get_env(rabbit, disk_monitor_failure_retry_interval),
State = #state{dir = Dir,
@@ -202,9 +204,6 @@ code_change(_OldVsn, State, _Extra) ->
%% Server Internals
%%----------------------------------------------------------------------------
-% the partition / drive containing this directory will be monitored
-dir() -> rabbit_mnesia:dir().
-
set_disk_limits(State, Limit0) ->
Limit = interpret_limit(Limit0),
State1 = State#state { limit = Limit },
diff --git a/src/rabbit_guid.erl b/src/rabbit_guid.erl
index e0c16d572c..6458934f0c 100644
--- a/src/rabbit_guid.erl
+++ b/src/rabbit_guid.erl
@@ -51,7 +51,7 @@ start_link() ->
-spec filename() -> string().
filename() ->
- filename:join(rabbit_mnesia:dir(), ?SERIAL_FILENAME).
+ rabbit_data:metadata_file(?SERIAL_FILENAME).
update_disk_serial() ->
Filename = filename(),
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 162badc33d..c0a294feb9 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -34,7 +34,6 @@
is_registered_process_alive/1,
cluster_nodes/1,
node_type/0,
- dir/0,
cluster_status_from_mnesia/0,
%% Operations on the db and utils, mainly used in `rabbit_upgrade' and `rabbit'
@@ -516,8 +515,8 @@ node_type() ->
end.
-spec dir() -> file:filename().
-
-dir() -> mnesia:system_info(directory).
+%% TODO: check usages of this function to separate mnesia specific cases
+dir() -> rabbit_data:mnesia_dir().
%%----------------------------------------------------------------------------
%% Operations on the db
diff --git a/src/rabbit_mnesia_rename.erl b/src/rabbit_mnesia_rename.erl
index 0fc0d3364f..519f88e31e 100644
--- a/src/rabbit_mnesia_rename.erl
+++ b/src/rabbit_mnesia_rename.erl
@@ -82,7 +82,7 @@ rename(Node, NodeMapList) ->
prepare(Node, NodeMapList) ->
%% If we have a previous rename and haven't started since, give up.
- case rabbit_file:is_dir(dir()) of
+ case rabbit_file:is_dir(rename_dir()) of
true -> exit({rename_in_progress,
"Restart node under old name to roll back"});
false -> ok = rabbit_file:ensure_dir(mnesia_copy_dir())
@@ -156,9 +156,9 @@ finish(FromNode, ToNode, AllNodes) ->
"Abandoning rename from ~s to ~s since we are still ~s~n",
[FromNode, ToNode, FromNode]),
[{ok, _} = file:copy(backup_of_conf(F), F) || F <- config_files()],
- ok = rabbit_file:recursive_delete([rabbit_mnesia:dir()]),
+ ok = rabbit_file:recursive_delete([rabbit_data:dir()]),
ok = rabbit_file:recursive_copy(
- mnesia_copy_dir(), rabbit_mnesia:dir()),
+ mnesia_copy_dir(), rabbit_data:dir()),
delete_rename_files();
_ ->
%% Boot will almost certainly fail but we might as
@@ -182,13 +182,13 @@ finish_secondary(FromNode, ToNode, AllNodes) ->
delete_rename_files(),
ok.
-dir() -> rabbit_mnesia:dir() ++ "-rename".
-before_backup_name() -> dir() ++ "/backup-before".
-after_backup_name() -> dir() ++ "/backup-after".
-rename_config_name() -> dir() ++ "/pending.config".
-mnesia_copy_dir() -> dir() ++ "/mnesia-copy".
+rename_dir() -> rabbit_data:dir() ++ "-rename".
+before_backup_name() -> rename_dir() ++ "/backup-before".
+after_backup_name() -> rename_dir() ++ "/backup-after".
+rename_config_name() -> rename_dir() ++ "/pending.config".
+mnesia_copy_dir() -> rename_dir() ++ "/mnesia-copy".
-delete_rename_files() -> ok = rabbit_file:recursive_delete([dir()]).
+delete_rename_files() -> ok = rabbit_file:recursive_delete([rename_dir()]).
start_mnesia() -> rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia),
rabbit_table:force_load(),
@@ -211,7 +211,7 @@ config_files() ->
rabbit_node_monitor:cluster_status_filename()].
backup_of_conf(Path) ->
- filename:join([dir(), filename:basename(Path)]).
+ filename:join([rename_dir(), filename:basename(Path)]).
convert_config_files(NodeMap) ->
[convert_config_file(NodeMap, Path) || Path <- config_files()].
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index e3b23cfbca..5271d503eb 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -1971,7 +1971,7 @@ cleanup_after_file_deletion(File,
%%----------------------------------------------------------------------------
-spec combine_files(non_neg_integer(), non_neg_integer(), gc_state()) ->
- {ok, deletion_thunk()} | {defer, non_neg_integer()}.
+ {ok, deletion_thunk()} | {defer, [non_neg_integer()]}.
combine_files(Source, Destination,
State = #gc_state { file_summary_ets = FileSummaryEts }) ->
@@ -2073,7 +2073,7 @@ do_combine_files(SourceSummary, DestinationSummary,
gen_server2:cast(Server, {combine_files, Source, Destination, Reclaimed}),
safe_file_delete_fun(Source, Dir, FileHandlesEts).
--spec delete_file(non_neg_integer(), gc_state()) -> {ok, deletion_thunk()} | {defer, non_neg_integer()}.
+-spec delete_file(non_neg_integer(), gc_state()) -> {ok, deletion_thunk()} | {defer, [non_neg_integer()]}.
delete_file(File, State = #gc_state { file_summary_ets = FileSummaryEts,
file_handles_ets = FileHandlesEts,
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index 9a47c4030e..2088f46575 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -74,15 +74,15 @@ start_link() -> gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
-spec running_nodes_filename() -> string().
running_nodes_filename() ->
- filename:join(rabbit_mnesia:dir(), "nodes_running_at_shutdown").
+ rabbit_data:metadata_file("nodes_running_at_shutdown").
-spec cluster_status_filename() -> string().
cluster_status_filename() ->
- filename:join(rabbit_mnesia:dir(), "cluster_nodes.config").
+ rabbit_data:metadata_file("cluster_nodes.config").
quorum_filename() ->
- filename:join(rabbit_mnesia:dir(), "quorum").
+ rabbit_data:quorum_queues_dir().
-spec prepare_cluster_status_files() -> 'ok' | no_return().
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl
index 7757b5229e..d03b83e787 100644
--- a/src/rabbit_plugins.erl
+++ b/src/rabbit_plugins.erl
@@ -83,33 +83,19 @@ ensure1(FileJustChanged0) ->
-spec plugins_expand_dir() -> file:filename().
plugins_expand_dir() ->
- case application:get_env(rabbit, plugins_expand_dir) of
- {ok, ExpandDir} ->
- ExpandDir;
- _ ->
- filename:join([rabbit_mnesia:dir(), "plugins_expand_dir"])
- end.
+ rabbit_data:plugins_expand_dir().
-spec plugins_dir() -> file:filename().
plugins_dir() ->
- case application:get_env(rabbit, plugins_dir) of
- {ok, PluginsDistDir} ->
- PluginsDistDir;
- _ ->
- filename:join([rabbit_mnesia:dir(), "plugins_dir_stub"])
- end.
+ rabbit_data:plugins_dir().
-spec enabled_plugins_file() -> file:filename().
enabled_plugins_file() ->
- case application:get_env(rabbit, enabled_plugins_file) of
- {ok, Val} ->
- Val;
- _ ->
- filename:join([rabbit_mnesia:dir(), "enabled_plugins"])
- end.
+ rabbit_data:enabled_plugins_file().
-spec enabled_plugins() -> [atom()].
enabled_plugins() ->
+ %% TODO: why not enabled_plugins_file/0 ?
case application:get_env(rabbit, enabled_plugins_file) of
{ok, EnabledFile} ->
read_enabled(EnabledFile);
diff --git a/src/rabbit_policy.erl b/src/rabbit_policy.erl
index ff07bfa8ee..26c3c0691b 100644
--- a/src/rabbit_policy.erl
+++ b/src/rabbit_policy.erl
@@ -223,7 +223,8 @@ recover0() ->
ok.
invalid_file() ->
- filename:join(rabbit_mnesia:dir(), "policies_are_invalid").
+ %% TODO: is this file related to mnesia data dir?
+ rabbit_data:metadata_file("policies_are_invalid").
%%----------------------------------------------------------------------------
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index 9de86ee232..11a3eec367 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -582,9 +582,6 @@ queue_name_to_dir_name_legacy(Name = #resource { kind = queue }) ->
<<Num:128>> = erlang:md5(term_to_binary_compat:term_to_binary_1(Name)),
rabbit_misc:format("~.36B", [Num]).
-queues_base_dir() ->
- rabbit_mnesia:dir().
-
blank_state_name_dir_funs(Name, Dir, OnSyncFun, OnSyncMsgFun) ->
{ok, MaxJournal} =
application:get_env(rabbit, queue_index_max_journal_entries),
@@ -1469,7 +1466,7 @@ drive_transform_fun(Fun, Hdl, Contents) ->
end.
move_to_per_vhost_stores(#resource{} = QueueName) ->
- OldQueueDir = filename:join([queues_base_dir(), "queues",
+ OldQueueDir = filename:join([legacy_queues_base_dir(),
queue_name_to_dir_name_legacy(QueueName)]),
NewQueueDir = queue_dir(QueueName),
rabbit_log_upgrade:info("About to migrate queue directory '~s' to '~s'",
@@ -1513,10 +1510,13 @@ read_global_recovery_terms(DurableQueueNames) ->
{OrderedTerms, {fun queue_index_walker/1, {start, DurableQueueNames}}}.
cleanup_global_recovery_terms() ->
- rabbit_file:recursive_delete([filename:join([queues_base_dir(), "queues"])]),
+ rabbit_file:recursive_delete([legacy_queues_base_dir()]),
rabbit_recovery_terms:delete_global_table(),
ok.
+%% Legacy queues directory
+legacy_queues_base_dir() ->
+ filename:join(rabbit_data:mnesia_dir(), "queues").
update_recovery_term(#resource{virtual_host = VHost} = QueueName, Term) ->
Key = queue_name_to_dir_name(QueueName),
diff --git a/src/rabbit_recovery_terms.erl b/src/rabbit_recovery_terms.erl
index 41327147d0..0ddf229b96 100644
--- a/src/rabbit_recovery_terms.erl
+++ b/src/rabbit_recovery_terms.erl
@@ -109,7 +109,7 @@ start_link(VHost) ->
upgrade_recovery_terms() ->
open_global_table(),
try
- QueuesDir = filename:join(rabbit_mnesia:dir(), "queues"),
+ QueuesDir = filename:join(legacy_data_dir(), "queues"),
Dirs = case rabbit_file:list_dir(QueuesDir) of
{ok, Entries} -> Entries;
{error, _} -> []
@@ -143,7 +143,7 @@ dets_upgrade(Fun)->
end.
open_global_table() ->
- File = filename:join(rabbit_mnesia:dir(), "recovery.dets"),
+ File = filename:join(legacy_data_dir(), "recovery.dets"),
{ok, _} = dets:open_file(?MODULE, [{file, File},
{ram_file, true},
{auto_save, infinity}]),
@@ -170,7 +170,10 @@ read_global(DirBaseName) ->
end.
delete_global_table() ->
- file:delete(filename:join(rabbit_mnesia:dir(), "recovery.dets")).
+ file:delete(filename:join(legacy_data_dir(), "recovery.dets")).
+
+legacy_data_dir() ->
+ rabbit_data:mnesia_dir().
%%----------------------------------------------------------------------------
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index 87029fad02..50ccd9ced1 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -22,7 +22,6 @@
-include("rabbit.hrl").
--define(VERSION_FILENAME, "schema_version").
-define(LOCK_FILENAME, "schema_upgrade_lock").
%% -------------------------------------------------------------------
@@ -303,11 +302,8 @@ apply_upgrade(Scope, {M, F}) ->
%% -------------------------------------------------------------------
-dir() -> rabbit_mnesia:dir().
-
-lock_filename() -> lock_filename(dir()).
-lock_filename(Dir) -> filename:join(Dir, ?LOCK_FILENAME).
-backup_dir() -> dir() ++ "-upgrade-backup".
+lock_filename() -> rabbit_data:metadata_file(?LOCK_FILENAME).
+backup_dir() -> rabbit_data:dir() ++ "-upgrade-backup".
node_type_legacy() ->
%% This is pretty ugly but we can't start Mnesia and ask it (will
@@ -315,7 +311,7 @@ node_type_legacy() ->
%% even if we're a disc node). We also can't use
%% rabbit_mnesia:node_type/0 because that will give false
%% positives on Rabbit up to 2.5.1.
- case filelib:is_regular(filename:join(dir(), "rabbit_durable_exchange.DCD")) of
+ case filelib:is_regular(filename:join(rabbit_data:mnesia_dir(), "rabbit_durable_exchange.DCD")) of
true -> disc;
false -> ram
end.
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index dfd55be1d0..52c5a7ec36 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -2809,9 +2809,12 @@ transform_storage(TransformFun) ->
transform_store(?PERSISTENT_MSG_STORE, TransformFun),
transform_store(?TRANSIENT_MSG_STORE, TransformFun).
+legacy_message_store_base_dir() ->
+ rabbit_data:mnesia_dir().
+
transform_store(Store, TransformFun) ->
- rabbit_msg_store:force_recovery(rabbit_mnesia:dir(), Store),
- rabbit_msg_store:transform_dir(rabbit_mnesia:dir(), Store, TransformFun).
+ rabbit_msg_store:force_recovery(legacy_message_store_base_dir(), Store),
+ rabbit_msg_store:transform_dir(legacy_message_store_base_dir(), Store, TransformFun).
move_messages_to_vhost_store() ->
case list_persistent_queues() of
@@ -2965,7 +2968,7 @@ read_old_recovery_terms(Queues) ->
run_old_persistent_store(Refs, StartFunState) ->
OldStoreName = ?PERSISTENT_MSG_STORE,
ok = rabbit_sup:start_child(OldStoreName, rabbit_msg_store, start_global_store_link,
- [OldStoreName, rabbit_mnesia:dir(),
+ [OldStoreName, legacy_message_store_base_dir(),
Refs, StartFunState]),
OldStoreName.
@@ -2992,10 +2995,10 @@ stop_new_store(NewStore) ->
delete_old_store() ->
log_upgrade("Removing the old message store data"),
rabbit_file:recursive_delete(
- [filename:join([rabbit_mnesia:dir(), ?PERSISTENT_MSG_STORE])]),
+ [filename:join([legacy_message_store_base_dir(), ?PERSISTENT_MSG_STORE])]),
%% Delete old transient store as well
rabbit_file:recursive_delete(
- [filename:join([rabbit_mnesia:dir(), ?TRANSIENT_MSG_STORE])]),
+ [filename:join([legacy_message_store_base_dir(), ?TRANSIENT_MSG_STORE])]),
ok.
log_upgrade(Msg) ->
diff --git a/src/rabbit_version.erl b/src/rabbit_version.erl
index 3e9d7dad80..5c3504697b 100644
--- a/src/rabbit_version.erl
+++ b/src/rabbit_version.erl
@@ -201,9 +201,7 @@ categorise_by_scope(Version) when is_list(Version) ->
rabbit_misc:maps_cons(Scope, Name, CatVersion)
end, maps:new(), Categorised)).
-dir() -> rabbit_mnesia:dir().
-
-schema_filename() -> filename:join(dir(), ?VERSION_FILENAME).
+schema_filename() -> rabbit_data:metadata_file(?VERSION_FILENAME).
%% --------------------------------------------------------------------
diff --git a/src/rabbit_vhost.erl b/src/rabbit_vhost.erl
index 8ab5a09725..05072c105f 100644
--- a/src/rabbit_vhost.erl
+++ b/src/rabbit_vhost.erl
@@ -314,8 +314,7 @@ msg_store_dir_wildcard() ->
rabbit_data_coercion:to_list(filename:join([msg_store_dir_base(), "*"])).
msg_store_dir_base() ->
- Dir = rabbit_mnesia:dir(),
- filename:join([Dir, "msg_stores", "vhosts"]).
+ rabbit_data:vhosts_store_dir().
%%----------------------------------------------------------------------------