Skip to content

Commit 3442c91

Browse files
gomoripetimichaelklishin
authored andcommitted
Introduce "plugins_data_dir" which is preserved during khepri migration
This is mainly for community plugins which want to migrate away from Mnesia into a new subdir. (They might not even use Khepri, or use Khepri but a different store id.) Fixes #11304
1 parent 5fa6f7e commit 3442c91

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

deps/rabbit/src/rabbit_mnesia.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1066,7 +1066,8 @@ mnesia_and_msg_store_files() ->
10661066
rabbit_node_monitor:classic_filename(),
10671067
rabbit_node_monitor:quorum_filename(),
10681068
rabbit_feature_flags:enabled_feature_flags_list_file(),
1069-
rabbit_khepri:dir()],
1069+
rabbit_khepri:dir(),
1070+
rabbit_plugins:plugins_data_dir()],
10701071
IgnoredFiles = [filename:basename(File) || File <- IgnoredFiles0],
10711072
?LOG_DEBUG("Files and directories found in node's data directory: ~ts, of them to be ignored: ~ts",
10721073
[string:join(lists:usort(List0), ", "), string:join(lists:usort(IgnoredFiles), ", ")]),

deps/rabbit/src/rabbit_plugins.erl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
-export([validate_plugins/1, format_invalid_plugins/1]).
1414
-export([is_strictly_plugin/1, strictly_plugins/2, strictly_plugins/1]).
1515
-export([plugins_dir/0, plugin_names/1, plugins_expand_dir/0, enabled_plugins_file/0]).
16+
-export([plugins_data_dir/0]).
1617
-export([is_enabled/1, is_enabled_on_node/2, enabled_plugins/0]).
1718
-export([which_plugin/1]).
1819

@@ -93,6 +94,15 @@ plugins_dir() ->
9394
filename:join([rabbit:data_dir(), "plugins_dir_stub"])
9495
end.
9596

97+
plugins_data_dir() ->
98+
case application:get_env(rabbit, plugins_data_dir) of
99+
{ok, PluginsDataDir} ->
100+
PluginsDataDir;
101+
_ ->
102+
DataDir = rabbit_mnesia:dir(),
103+
filename:join([DataDir, "plugins_data_dir"])
104+
end.
105+
96106
-spec enabled_plugins_file() -> file:filename().
97107
enabled_plugins_file() ->
98108
case application:get_env(rabbit, enabled_plugins_file) of

deps/rabbit/test/metadata_store_migration_SUITE.erl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ from_mnesia_to_khepri(Config) ->
124124
Maintenance = rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_db_maintenance, get, [Server]),
125125
?assertNot(undefined == Maintenance),
126126

127+
PluginsDataDir = rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_plugins, plugins_data_dir, []),
128+
ok = file:make_dir(PluginsDataDir),
129+
PluginDataFile = filename:join(PluginsDataDir, "test.txt"),
130+
ok = file:write_file(PluginDataFile, "test content"),
131+
127132
%% 2)
128133
Servers = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
129134
ok = rabbit_ct_broker_helpers:enable_feature_flag(Config, Servers, khepri_db),
@@ -156,5 +161,8 @@ from_mnesia_to_khepri(Config) ->
156161
MaintenanceK = rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_db_maintenance, get, [Server]),
157162
?assertEqual(MaintenanceK, Maintenance),
158163

164+
%% plugin data file should be preserved
165+
?assertEqual({ok, <<"test content">>}, file:read_file(PluginDataFile)),
166+
159167
ok.
160168

0 commit comments

Comments
 (0)