Merge pull request #14622 from rabbitmq/rabbitmq-server-11304

Introduce a configurable directory for 3rd party plugins that's not deleted during the Mnesia => Khepri migration
This commit is contained in:
Michael Klishin 2025-09-26 16:11:41 -04:00 committed by GitHub
commit 149b5e30ad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 1 deletions

View File

@ -1066,7 +1066,8 @@ mnesia_and_msg_store_files() ->
rabbit_node_monitor:classic_filename(),
rabbit_node_monitor:quorum_filename(),
rabbit_feature_flags:enabled_feature_flags_list_file(),
rabbit_khepri:dir()],
rabbit_khepri:dir(),
rabbit_plugins:user_provided_plugins_data_dir()],
IgnoredFiles = [filename:basename(File) || File <- IgnoredFiles0],
?LOG_DEBUG("Files and directories found in node's data directory: ~ts, of them to be ignored: ~ts",
[string:join(lists:usort(List0), ", "), string:join(lists:usort(IgnoredFiles), ", ")]),

View File

@ -13,6 +13,7 @@
-export([validate_plugins/1, format_invalid_plugins/1]).
-export([is_strictly_plugin/1, strictly_plugins/2, strictly_plugins/1]).
-export([plugins_dir/0, plugin_names/1, plugins_expand_dir/0, enabled_plugins_file/0]).
-export([user_provided_plugins_data_dir/0]).
-export([is_enabled/1, is_enabled_on_node/2, enabled_plugins/0]).
-export([which_plugin/1]).
@ -93,6 +94,15 @@ plugins_dir() ->
filename:join([rabbit:data_dir(), "plugins_dir_stub"])
end.
user_provided_plugins_data_dir() ->
case application:get_env(rabbit, user_provided_plugins_data_dir) of
{ok, PluginsDataDir} ->
PluginsDataDir;
_ ->
DataDir = rabbit_mnesia:dir(),
filename:join([DataDir, "user_provided_plugins_data_dir"])
end.
-spec enabled_plugins_file() -> file:filename().
enabled_plugins_file() ->
case application:get_env(rabbit, enabled_plugins_file) of

View File

@ -124,6 +124,11 @@ from_mnesia_to_khepri(Config) ->
Maintenance = rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_db_maintenance, get, [Server]),
?assertNot(undefined == Maintenance),
PluginsDataDir = rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_plugins, user_provided_plugins_data_dir, []),
ok = file:make_dir(PluginsDataDir),
PluginDataFile = filename:join(PluginsDataDir, "test.txt"),
ok = file:write_file(PluginDataFile, "test content"),
%% 2)
Servers = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
ok = rabbit_ct_broker_helpers:enable_feature_flag(Config, Servers, khepri_db),
@ -156,5 +161,8 @@ from_mnesia_to_khepri(Config) ->
MaintenanceK = rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_db_maintenance, get, [Server]),
?assertEqual(MaintenanceK, Maintenance),
%% plugin data file should be preserved
?assertEqual({ok, <<"test content">>}, file:read_file(PluginDataFile)),
ok.