From 016697ba8e32e3313845645c0747409dc27d503c Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Sat, 13 Apr 2024 08:27:09 -0400 Subject: [PATCH 1/2] recent history exchange: Fix mnesia deletion return value The caller expects this value to either be 'ok' or an error tuple but it was returning `{atomic,ok}` causing a crash when deactivating this plugin. --- .../src/rabbit_db_rh_exchange.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/deps/rabbitmq_recent_history_exchange/src/rabbit_db_rh_exchange.erl b/deps/rabbitmq_recent_history_exchange/src/rabbit_db_rh_exchange.erl index f8ed2762c5e6..c50fc93a189f 100644 --- a/deps/rabbitmq_recent_history_exchange/src/rabbit_db_rh_exchange.erl +++ b/deps/rabbitmq_recent_history_exchange/src/rabbit_db_rh_exchange.erl @@ -142,7 +142,12 @@ delete() -> }). delete_in_mnesia() -> - mnesia:delete_table(?RH_TABLE). + case mnesia:delete_table(?RH_TABLE) of + {atomic, ok} -> + ok; + {aborted, Reason} -> + {error, Reason} + end. delete_in_khepri() -> rabbit_khepri:delete(khepri_recent_history_path()). From 21b5c9000a1c0c8bb79103193bd564e47f2a5778 Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Sun, 14 Apr 2024 08:32:54 -0400 Subject: [PATCH 2/2] recent history exchange: Test plugin boot and cleanup steps --- .../test/system_SUITE.erl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/deps/rabbitmq_recent_history_exchange/test/system_SUITE.erl b/deps/rabbitmq_recent_history_exchange/test/system_SUITE.erl index 3b84b85bec98..2e05ddb30eba 100644 --- a/deps/rabbitmq_recent_history_exchange/test/system_SUITE.erl +++ b/deps/rabbitmq_recent_history_exchange/test/system_SUITE.erl @@ -41,7 +41,8 @@ all_tests() -> wrong_argument_type_test, no_store_test, e2e_test, - multinode_test + multinode_test, + lifecycle_test ]. %% ------------------------------------------------------------------- @@ -235,6 +236,16 @@ multinode_test(Config) -> rabbit_ct_client_helpers:close_connection_and_channel(Conn2, Chan2), ok. +lifecycle_test(Config) -> + %% Ensure that the boot and cleanup steps run as expected and return 'ok'. + ok = rabbit_ct_broker_helpers:rpc( + Config, + rabbit, stop_apps, [[rabbitmq_recent_history_exchange]]), + ok = rabbit_ct_broker_helpers:rpc( + Config, + rabbit, start_apps, [[rabbitmq_recent_history_exchange]]), + ok. + test0(Config, MakeMethod, MakeMsg, DeclareArgs, Queues, MsgCount, ExpectedCount) -> Chan = rabbit_ct_client_helpers:open_channel(Config), #'exchange.declare_ok'{} =