diff --git a/deps/rabbit/src/rabbit_mnesia.erl b/deps/rabbit/src/rabbit_mnesia.erl index 1299293b5b23..9dd73f68b0dd 100644 --- a/deps/rabbit/src/rabbit_mnesia.erl +++ b/deps/rabbit/src/rabbit_mnesia.erl @@ -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), ", ")]), diff --git a/deps/rabbit/src/rabbit_plugins.erl b/deps/rabbit/src/rabbit_plugins.erl index d99d08d99dac..ff50bee83a08 100644 --- a/deps/rabbit/src/rabbit_plugins.erl +++ b/deps/rabbit/src/rabbit_plugins.erl @@ -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 diff --git a/deps/rabbit/test/metadata_store_migration_SUITE.erl b/deps/rabbit/test/metadata_store_migration_SUITE.erl index a1bd26acd18b..cb8cd4364a84 100644 --- a/deps/rabbit/test/metadata_store_migration_SUITE.erl +++ b/deps/rabbit/test/metadata_store_migration_SUITE.erl @@ -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.