Skip to content

Commit 842470a

Browse files
Merge branch 'main' into eval_membership_stand_alone_process
2 parents 7ef4ce3 + 2d389e5 commit 842470a

File tree

56 files changed

+1756
-1056
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1756
-1056
lines changed

.github/workflows/oci-base.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ jobs:
3636
id: authorized
3737
run: |
3838
if [ -n "${{ secrets.DOCKERHUB_USERNAME }}" ]; then
39-
echo "::set-output name=PUSH::true"
39+
echo "PUSH=true" >> $GITHUB_OUTPUT
4040
else
41-
echo "::set-output name=PUSH::false"
41+
echo "PUSH=false" >> $GITHUB_OUTPUT
4242
fi
4343
4444
- name: Login to DockerHub

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ rabbitmq-server-*.tar.xz
8686
rabbitmq-server-*.zip
8787

8888
traces*
89+
deps/rabbitmq_stomp/test/python_SUITE_data/src/deps
8990
callgrand*
9091

9192
/user.bazelrc

deps/rabbit/BUILD.bazel

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,6 @@ rabbitmq_integration_suite(
386386
additional_beam = [
387387
":test_quorum_queue_utils_beam",
388388
],
389-
flaky = True,
390389
shard_count = 7,
391390
)
392391

@@ -562,7 +561,7 @@ rabbitmq_suite(
562561

563562
rabbitmq_integration_suite(
564563
name = "peer_discovery_classic_config_SUITE",
565-
size = "medium",
564+
size = "large",
566565
flaky = True,
567566
)
568567

@@ -574,7 +573,6 @@ rabbitmq_integration_suite(
574573
rabbitmq_integration_suite(
575574
name = "per_user_connection_channel_limit_partitions_SUITE",
576575
size = "large",
577-
flaky = True,
578576
)
579577

580578
rabbitmq_integration_suite(
@@ -1054,7 +1052,6 @@ rabbitmq_integration_suite(
10541052
additional_beam = [
10551053
"test/test_rabbit_event_handler.beam",
10561054
],
1057-
flaky = True,
10581055
)
10591056

10601057
rabbitmq_suite(

deps/rabbit/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers amqp_client meck prop
149149
PLT_APPS += mnesia
150150

151151
dep_syslog = git https://github.com/schlagert/syslog 4.0.0
152-
dep_osiris = git https://github.com/rabbitmq/osiris v1.6.0
152+
dep_osiris = git https://github.com/rabbitmq/osiris v1.6.1
153153
dep_systemd = hex 0.6.1
154154
dep_seshat = hex 0.4.0
155155

deps/rabbit/app.bzl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
884884
outs = ["test/definition_import_SUITE.beam"],
885885
app_name = "rabbit",
886886
erlc_opts = "//:test_erlc_opts",
887-
deps = ["//deps/rabbit_common:erlang_app"],
887+
deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
888888
)
889889
erlang_bytecode(
890890
name = "deprecated_features_SUITE_beam_files",
@@ -936,7 +936,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
936936
outs = ["test/dynamic_qq_SUITE.beam"],
937937
app_name = "rabbit",
938938
erlc_opts = "//:test_erlc_opts",
939-
deps = ["//deps/amqp_client:erlang_app"],
939+
deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
940940
)
941941
erlang_bytecode(
942942
name = "eager_sync_SUITE_beam_files",
@@ -1115,7 +1115,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
11151115
outs = ["test/per_user_connection_tracking_SUITE.beam"],
11161116
app_name = "rabbit",
11171117
erlc_opts = "//:test_erlc_opts",
1118-
deps = ["//deps/amqp_client:erlang_app"],
1118+
deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
11191119
)
11201120
erlang_bytecode(
11211121
name = "per_vhost_connection_limit_SUITE_beam_files",
@@ -1151,7 +1151,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
11511151
outs = ["test/per_vhost_queue_limit_SUITE.beam"],
11521152
app_name = "rabbit",
11531153
erlc_opts = "//:test_erlc_opts",
1154-
deps = ["//deps/amqp_client:erlang_app"],
1154+
deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
11551155
)
11561156
erlang_bytecode(
11571157
name = "policy_SUITE_beam_files",
@@ -1222,7 +1222,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
12221222
outs = ["test/queue_master_location_SUITE.beam"],
12231223
app_name = "rabbit",
12241224
erlc_opts = "//:test_erlc_opts",
1225-
deps = ["//deps/amqp_client:erlang_app"],
1225+
deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
12261226
)
12271227
erlang_bytecode(
12281228
name = "queue_parallel_SUITE_beam_files",
@@ -1730,7 +1730,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
17301730
outs = ["test/unit_log_management_SUITE.beam"],
17311731
app_name = "rabbit",
17321732
erlc_opts = "//:test_erlc_opts",
1733-
deps = ["//deps/amqp_client:erlang_app"],
1733+
deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
17341734
)
17351735
erlang_bytecode(
17361736
name = "unit_operator_policy_SUITE_beam_files",
@@ -1832,7 +1832,7 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
18321832
outs = ["test/vhost_SUITE.beam"],
18331833
app_name = "rabbit",
18341834
erlc_opts = "//:test_erlc_opts",
1835-
deps = ["//deps/amqp_client:erlang_app"],
1835+
deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"],
18361836
)
18371837
erlang_bytecode(
18381838
name = "rabbit_cuttlefish_SUITE_beam_files",

deps/rabbit/src/rabbit_db.erl

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,23 @@ init() ->
4242
?LOG_DEBUG(
4343
"DB: this node is virgin: ~ts", [IsVirgin],
4444
#{domain => ?RMQLOG_DOMAIN_DB}),
45+
4546
ensure_dir_exists(),
46-
case init_using_mnesia() of
47+
rabbit_peer_discovery:log_configured_backend(),
48+
rabbit_peer_discovery:maybe_init(),
49+
50+
pre_init(IsVirgin),
51+
52+
Ret = run(
53+
#{mnesia => fun init_using_mnesia/0}),
54+
case Ret of
4755
ok ->
4856
?LOG_DEBUG(
4957
"DB: initialization successeful",
5058
#{domain => ?RMQLOG_DOMAIN_DB}),
59+
60+
post_init(IsVirgin),
61+
5162
ok;
5263
Error ->
5364
?LOG_DEBUG(
@@ -56,6 +67,17 @@ init() ->
5667
Error
5768
end.
5869

70+
pre_init(IsVirgin) ->
71+
Members = rabbit_db_cluster:members(),
72+
OtherMembers = rabbit_nodes:nodes_excl_me(Members),
73+
rabbit_db_cluster:ensure_feature_flags_are_in_sync(OtherMembers, IsVirgin).
74+
75+
post_init(false = _IsVirgin) ->
76+
rabbit_peer_discovery:maybe_register();
77+
post_init(true = _IsVirgin) ->
78+
%% Registration handled by rabbit_peer_discovery.
79+
ok.
80+
5981
init_using_mnesia() ->
6082
?LOG_DEBUG(
6183
"DB: initialize Mnesia",
@@ -69,11 +91,12 @@ init_using_mnesia() ->
6991
%% @doc Resets the database and the node.
7092

7193
reset() ->
72-
reset_using_mnesia().
94+
run(
95+
#{mnesia => fun reset_using_mnesia/0}).
7396

7497
reset_using_mnesia() ->
75-
?LOG_DEBUG(
76-
"DB: resetting node",
98+
?LOG_INFO(
99+
"DB: resetting node (using Mnesia)",
77100
#{domain => ?RMQLOG_DOMAIN_DB}),
78101
rabbit_mnesia:reset().
79102

@@ -82,11 +105,12 @@ reset_using_mnesia() ->
82105
%% @doc Resets the database and the node.
83106

84107
force_reset() ->
85-
force_reset_using_mnesia().
108+
run(
109+
#{mnesia => fun force_reset_using_mnesia/0}).
86110

87111
force_reset_using_mnesia() ->
88112
?LOG_DEBUG(
89-
"DB: resetting node forcefully",
113+
"DB: resetting node forcefully (using Mnesia)",
90114
#{domain => ?RMQLOG_DOMAIN_DB}),
91115
rabbit_mnesia:force_reset().
92116

@@ -98,11 +122,12 @@ force_reset_using_mnesia() ->
98122
%% state, like if critical members are MIA.
99123

100124
force_load_on_next_boot() ->
101-
force_load_on_next_boot_using_mnesia().
125+
run(
126+
#{mnesia => fun force_load_on_next_boot_using_mnesia/0}).
102127

103128
force_load_on_next_boot_using_mnesia() ->
104129
?LOG_DEBUG(
105-
"DB: resetting node forcefully",
130+
"DB: force load on next boot (using Mnesia)",
106131
#{domain => ?RMQLOG_DOMAIN_DB}),
107132
rabbit_mnesia:force_load_next_boot().
108133

@@ -115,8 +140,11 @@ force_load_on_next_boot_using_mnesia() ->
115140
%% @see is_virgin_node/1.
116141

117142
is_virgin_node() ->
118-
ThisNode = node(),
119-
is_virgin_node(ThisNode).
143+
run(
144+
#{mnesia => fun is_virgin_node_using_mnesia/0}).
145+
146+
is_virgin_node_using_mnesia() ->
147+
rabbit_mnesia:is_virgin_node().
120148

121149
-spec is_virgin_node(Node) -> IsVirgin | undefined when
122150
Node :: node(),
@@ -129,14 +157,11 @@ is_virgin_node() ->
129157
%% @returns `true' if the node is virgin, `false' if it is not, or `undefined'
130158
%% if the given node is remote and we couldn't determine it.
131159

160+
is_virgin_node(Node) when Node =:= node() ->
161+
is_virgin_node();
132162
is_virgin_node(Node) when is_atom(Node) ->
133-
is_virgin_node_with_mnesia(Node).
134-
135-
is_virgin_node_with_mnesia(Node) when Node =:= node() ->
136-
rabbit_mnesia:is_virgin_node();
137-
is_virgin_node_with_mnesia(Node) ->
138163
try
139-
erpc:call(Node, rabbit_mnesia, is_virgin_node, [], ?TIMEOUT)
164+
erpc:call(Node, ?MODULE, is_virgin_node, [], ?TIMEOUT)
140165
catch
141166
_:_ ->
142167
undefined
@@ -149,7 +174,8 @@ is_virgin_node_with_mnesia(Node) ->
149174
%% @returns the directory path.
150175

151176
dir() ->
152-
mnesia_dir().
177+
run(
178+
#{mnesia => fun mnesia_dir/0}).
153179

154180
mnesia_dir() ->
155181
rabbit_mnesia:dir().
@@ -183,9 +209,9 @@ ensure_dir_exists() ->
183209
run(Funs)
184210
when is_map(Funs) andalso is_map_key(mnesia, Funs) ->
185211
#{mnesia := MnesiaFun} = Funs,
186-
run_with_mnesia(MnesiaFun).
212+
run_using_mnesia(MnesiaFun).
187213

188-
run_with_mnesia(Fun) ->
214+
run_using_mnesia(Fun) ->
189215
Fun().
190216

191217
list_in_mnesia(Table, Match) ->

0 commit comments

Comments
 (0)