Skip to content

Commit d7c700a

Browse files
Merge pull request #9026 from rabbitmq/fixes-from-the-khepri-branch
Fixes from the `khepri` branch
2 parents 2f3ed98 + ada57c0 commit d7c700a

File tree

9 files changed

+105
-13
lines changed

9 files changed

+105
-13
lines changed

deps/rabbit/src/rabbit.erl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,10 +1038,7 @@ prep_stop(State) ->
10381038

10391039
stop(State) ->
10401040
ok = rabbit_alarm:stop(),
1041-
ok = case rabbit_db_cluster:is_clustered() of
1042-
true -> ok;
1043-
false -> rabbit_table:clear_ram_only_tables()
1044-
end,
1041+
ok = rabbit_table:maybe_clear_ram_only_tables(),
10451042
case State of
10461043
[] -> rabbit_prelaunch:set_stop_reason(normal);
10471044
_ -> rabbit_prelaunch:set_stop_reason(State)

deps/rabbit/src/rabbit_db_cluster.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ join(RemoteNode, NodeType)
100100
end.
101101

102102
join_using_mnesia(ClusterNodes, NodeType) when is_list(ClusterNodes) ->
103+
ok = rabbit_mnesia:reset_gracefully(),
103104
rabbit_mnesia:join_cluster(ClusterNodes, NodeType).
104105

105106
-spec forget_member(Node, RemoveWhenOffline) -> ok when

deps/rabbit/src/rabbit_mnesia.erl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
on_node_down/1,
4848

4949
%% Helpers for diagnostics commands
50-
schema_info/1
50+
schema_info/1,
51+
52+
reset_gracefully/0
5153
]).
5254

5355
%% Mnesia queries

deps/rabbit/src/rabbit_table.erl

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
create/0, create/2, ensure_local_copies/1, ensure_table_copy/3,
1212
wait_for_replicated/1, wait/1, wait/2,
1313
force_load/0, is_present/0, is_empty/0, needs_default_data/0,
14-
check_schema_integrity/1, clear_ram_only_tables/0, retry_timeout/0,
15-
wait_for_replicated/0]).
14+
check_schema_integrity/1,
15+
clear_ram_only_tables/0, maybe_clear_ram_only_tables/0,
16+
retry_timeout/0, wait_for_replicated/0]).
1617

1718
%% for testing purposes
1819
-export([definitions/0]).
@@ -191,6 +192,12 @@ clear_ram_only_tables() ->
191192
end, names()),
192193
ok.
193194

195+
maybe_clear_ram_only_tables() ->
196+
ok = case rabbit_db_cluster:is_clustered() of
197+
true -> ok;
198+
false -> clear_ram_only_tables()
199+
end.
200+
194201
%% The sequence in which we delete the schema and then the other
195202
%% tables is important: if we delete the schema first when moving to
196203
%% RAM mnesia will loudly complain since it doesn't make much sense to

deps/rabbit/test/peer_discovery_classic_config_SUITE.erl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,10 @@ init_per_testcase(successful_discovery_with_a_subset_of_nodes_coming_online = Te
9494
%% not exist and not just unreachable
9595
Config3 = rabbit_ct_helpers:merge_app_env(Config2,
9696
{rabbit, [
97-
{cluster_formation, [
98-
{discovery_retry_limit, 10},
99-
{discovery_retry_interval, 200}
100-
]},
10197
{cluster_nodes, {NodeNamesWithHostname, disc}},
10298
{cluster_formation, [
99+
{discovery_retry_limit, 2},
100+
{discovery_retry_interval, 100},
103101
{internal_lock_retries, 10}
104102
]}
105103
]}),

deps/rabbit/test/per_vhost_connection_limit_SUITE.erl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,17 @@ cluster_multiple_vhosts_zero_limit(Config) ->
657657
vhost_limit_after_node_renamed(Config) ->
658658
A = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
659659

660+
%% Make sure the maintenance mode states Mnesia table is replicated
661+
%% everywhere. We do this here, just in case mixed-version testing is
662+
%% against a version of RabbitMQ that doesn't have the fix yet.
663+
%%
664+
%% See https://github.com/rabbitmq/rabbitmq-server/pull/9005.
665+
B = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
666+
rabbit_ct_broker_helpers:rpc(
667+
Config, B,
668+
rabbit_table, ensure_table_copy,
669+
[rabbit_node_maintenance_states, B, ram_copies]),
670+
660671
VHost = <<"/renaming_node">>,
661672
set_up_vhost(Config, VHost),
662673
set_vhost_connection_limit(Config, VHost, 2),

deps/rabbitmq_ct_helpers/src/rabbit_ct_broker_helpers.erl

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,60 @@ rabbitmqctl(Config, Node, Args) ->
10801080
rabbitmqctl(Config, Node, Args, infinity).
10811081

10821082
rabbitmqctl(Config, Node, Args, Timeout) ->
1083-
Rabbitmqctl = ?config(rabbitmqctl_cmd, Config),
1083+
%% We want to use the CLI from the given node if there is a secondary
1084+
%% umbrella being configured.
1085+
I = get_node_index(Config, Node),
1086+
CanUseSecondary = (I + 1) rem 2 =:= 0,
1087+
BazelRunSecCmd = rabbit_ct_helpers:get_config(
1088+
Config, rabbitmq_run_secondary_cmd),
1089+
UseSecondaryUmbrella = case ?config(secondary_umbrella, Config) of
1090+
false ->
1091+
case BazelRunSecCmd of
1092+
undefined -> false;
1093+
_ -> CanUseSecondary
1094+
end;
1095+
_ ->
1096+
CanUseSecondary
1097+
end,
1098+
Rabbitmqctl = case UseSecondaryUmbrella of
1099+
true ->
1100+
case BazelRunSecCmd of
1101+
undefined ->
1102+
SrcDir = ?config(
1103+
secondary_rabbit_srcdir,
1104+
Config),
1105+
SecDepsDir = ?config(
1106+
secondary_erlang_mk_depsdir,
1107+
Config),
1108+
SecNewScriptsDir = filename:join(
1109+
[SecDepsDir,
1110+
SrcDir,
1111+
"sbin"]),
1112+
SecOldScriptsDir = filename:join(
1113+
[SecDepsDir,
1114+
"rabbit",
1115+
"scripts"]),
1116+
SecNewScriptsDirExists = filelib:is_dir(
1117+
SecNewScriptsDir),
1118+
SecScriptsDir =
1119+
case SecNewScriptsDirExists of
1120+
true -> SecNewScriptsDir;
1121+
false -> SecOldScriptsDir
1122+
end,
1123+
rabbit_misc:format(
1124+
"~ts/rabbitmqctl", [SecScriptsDir]);
1125+
_ ->
1126+
BazelSecScriptsDir = filename:dirname(
1127+
BazelRunSecCmd),
1128+
filename:join(
1129+
[BazelSecScriptsDir,
1130+
"sbin",
1131+
"rabbitmqctl"])
1132+
end;
1133+
false ->
1134+
?config(rabbitmqctl_cmd, Config)
1135+
end,
1136+
10841137
NodeConfig = get_node_config(Config, Node),
10851138
Nodename = ?config(nodename, NodeConfig),
10861139
Env0 = [
@@ -1138,6 +1191,23 @@ rabbitmq_queues(Config, Node, Args) ->
11381191
%% Other helpers.
11391192
%% -------------------------------------------------------------------
11401193

1194+
get_node_index(Config, Node) when is_atom(Node) andalso Node =/= undefined ->
1195+
NodeConfigs = get_node_configs(Config),
1196+
get_node_index1(NodeConfigs, Node, 0);
1197+
get_node_index(_Config, I) when is_integer(I) andalso I >= 0 ->
1198+
I.
1199+
1200+
get_node_index1([NodeConfig | Rest], Node, I) ->
1201+
case ?config(nodename, NodeConfig) of
1202+
Node ->
1203+
I;
1204+
_ ->
1205+
case ?config(initial_nodename, NodeConfig) of
1206+
Node -> I;
1207+
_ -> get_node_index1(Rest, Node, I + 1)
1208+
end
1209+
end.
1210+
11411211
get_node_configs(Config) ->
11421212
?config(rmq_nodes, Config).
11431213

deps/rabbitmq_mqtt/test/reader_SUITE.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ event_authentication_failure(Config) ->
243243

244244
?assertMatch({error, _}, emqtt:connect(C)),
245245

246-
[E] = util:get_events(Server),
246+
[E | _] = util:get_events(Server, user_authentication_failure),
247247
util:assert_event_type(user_authentication_failure, E),
248248
util:assert_event_prop([{name, <<"Trudy">>},
249249
{connection_type, network}],

deps/rabbitmq_mqtt/test/util.erl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
connect/4,
2020
start_client/4,
2121
get_events/1,
22+
get_events/2,
2223
assert_event_type/2,
2324
assert_event_prop/2,
2425
assert_message_expiry_interval/2,
@@ -104,6 +105,11 @@ get_events(Node) ->
104105
?assert(is_list(Result)),
105106
Result.
106107

108+
get_events(Node, Type) ->
109+
lists:filter(fun(#event{type = T}) ->
110+
T == Type
111+
end, get_events(Node)).
112+
107113
assert_event_type(ExpectedType, #event{type = ActualType}) ->
108114
?assertEqual(ExpectedType, ActualType).
109115

0 commit comments

Comments
 (0)