Skip to content

Commit 860bb7c

Browse files
Merge pull request #13638 from rabbitmq/ra-2.16.5
2 parents 2a93bbc + 4fe96df commit 860bb7c

File tree

3 files changed

+51
-57
lines changed

3 files changed

+51
-57
lines changed

deps/rabbit/src/rabbit_quorum_queue.erl

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -425,11 +425,10 @@ local_or_remote_handler(ChPid, Module, Function, Args) ->
425425
erpc:cast(Node, Module, Function, Args)
426426
end.
427427

428-
become_leader(QName, Name) ->
429-
%% as this function is called synchronously when a ra node becomes leader
430-
%% we need to ensure there is no chance of blocking as else the ra node
431-
%% may not be able to establish its leadership
432-
spawn(fun () -> become_leader0(QName, Name) end).
428+
become_leader(_QName, _Name) ->
429+
%% noop now as we instead rely on the promt tick_timeout + repair to update
430+
%% the meta data store after a leader change
431+
ok.
433432

434433
become_leader0(QName, Name) ->
435434
Fun = fun (Q1) ->
@@ -580,7 +579,6 @@ handle_tick(QName,
580579
Nodes) ->
581580
%% this makes calls to remote processes so cannot be run inside the
582581
%% ra server
583-
Self = self(),
584582
spawn(
585583
fun() ->
586584
try
@@ -638,7 +636,7 @@ handle_tick(QName,
638636
end}
639637
| Infos0],
640638
rabbit_core_metrics:queue_stats(QName, Infos),
641-
ok = repair_leader_record(Q, Self),
639+
ok = repair_leader_record(Q, Name),
642640
case repair_amqqueue_nodes(Q) of
643641
ok ->
644642
ok;
@@ -675,17 +673,16 @@ handle_tick(QName, Config, _Nodes) ->
675673
rabbit_log:debug("~ts: handle tick received unexpected config format ~tp",
676674
[rabbit_misc:rs(QName), Config]).
677675

678-
repair_leader_record(Q, Self) ->
676+
repair_leader_record(Q, Name) ->
679677
Node = node(),
680678
case amqqueue:get_pid(Q) of
681679
{_, Node} ->
682680
%% it's ok - we don't need to do anything
683681
ok;
684682
_ ->
685683
QName = amqqueue:get_name(Q),
686-
rabbit_log:debug("~ts: repairing leader record",
687-
[rabbit_misc:rs(QName)]),
688-
{_, Name} = erlang:process_info(Self, registered_name),
684+
rabbit_log:debug("~ts: updating leader record to current node ~b",
685+
[rabbit_misc:rs(QName), Node]),
689686
ok = become_leader0(QName, Name),
690687
ok
691688
end,

deps/rabbitmq_management/test/rabbit_mgmt_only_http_SUITE.erl

Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -482,53 +482,50 @@ queues_enable_totals_test(Config) ->
482482
Publish(<<"foo">>),
483483

484484
Fun = fun() ->
485-
length(rabbit_ct_broker_helpers:rpc(Config, 0, ets, tab2list,
486-
[queue_coarse_metrics])) == 2
485+
Queues = http_get(Config, "/queues/%2F"),
486+
Queue = http_get(Config, "/queues/%2F/foo"),
487+
488+
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
489+
NodeBin = atom_to_binary(Node, utf8),
490+
assert_list([#{name => <<"baz">>,
491+
vhost => <<"/">>,
492+
durable => true,
493+
auto_delete => false,
494+
exclusive => false,
495+
arguments => #{'x-queue-type' => <<"classic">>},
496+
node => NodeBin,
497+
messages => 1,
498+
messages_ready => 1,
499+
messages_unacknowledged => 0},
500+
#{name => <<"foo">>,
501+
vhost => <<"/">>,
502+
durable => true,
503+
auto_delete => false,
504+
exclusive => null,
505+
arguments => #{'x-queue-type' => <<"quorum">>},
506+
leader => NodeBin,
507+
messages => 2,
508+
messages_ready => 2,
509+
messages_unacknowledged => 0,
510+
members => [NodeBin]}], Queues),
511+
assert_item(#{name => <<"foo">>,
512+
vhost => <<"/">>,
513+
durable => true,
514+
auto_delete => false,
515+
exclusive => null,
516+
arguments => #{'x-queue-type' => <<"quorum">>},
517+
leader => NodeBin,
518+
messages => 2,
519+
messages_ready => 2,
520+
messages_unacknowledged => 0,
521+
members => [NodeBin]}, Queue),
522+
523+
?assert(not maps:is_key(message_stats, Queue)),
524+
?assert(not maps:is_key(messages_details, Queue)),
525+
?assert(not maps:is_key(reductions_details, Queue)),
526+
true
487527
end,
488528
await_condition(Fun),
489-
490-
Queues = http_get(Config, "/queues/%2F"),
491-
Queue = http_get(Config, "/queues/%2F/foo"),
492-
493-
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
494-
NodeBin = atom_to_binary(Node, utf8),
495-
assert_list([#{name => <<"baz">>,
496-
vhost => <<"/">>,
497-
durable => true,
498-
auto_delete => false,
499-
exclusive => false,
500-
arguments => #{'x-queue-type' => <<"classic">>},
501-
node => NodeBin,
502-
messages => 1,
503-
messages_ready => 1,
504-
messages_unacknowledged => 0},
505-
#{name => <<"foo">>,
506-
vhost => <<"/">>,
507-
durable => true,
508-
auto_delete => false,
509-
exclusive => null,
510-
arguments => #{'x-queue-type' => <<"quorum">>},
511-
leader => NodeBin,
512-
messages => 2,
513-
messages_ready => 2,
514-
messages_unacknowledged => 0,
515-
members => [NodeBin]}], Queues),
516-
assert_item(#{name => <<"foo">>,
517-
vhost => <<"/">>,
518-
durable => true,
519-
auto_delete => false,
520-
exclusive => null,
521-
arguments => #{'x-queue-type' => <<"quorum">>},
522-
leader => NodeBin,
523-
messages => 2,
524-
messages_ready => 2,
525-
messages_unacknowledged => 0,
526-
members => [NodeBin]}, Queue),
527-
528-
?assert(not maps:is_key(message_stats, Queue)),
529-
?assert(not maps:is_key(messages_details, Queue)),
530-
?assert(not maps:is_key(reductions_details, Queue)),
531-
532529
http_delete(Config, "/queues/%2F/foo", {group, '2xx'}),
533530
http_delete(Config, "/queues/%2F/baz", {group, '2xx'}),
534531
close_connection(Conn),

rabbitmq-components.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ dep_khepri_mnesia_migration = hex 0.7.1
5151
dep_meck = hex 1.0.0
5252
dep_osiris = git https://github.com/rabbitmq/osiris v1.8.6
5353
dep_prometheus = hex 4.11.0
54-
dep_ra = hex 2.16.3
54+
dep_ra = hex 2.16.5
5555
dep_ranch = hex 2.2.0
5656
dep_recon = hex 2.5.6
5757
dep_redbug = hex 2.0.7

0 commit comments

Comments
 (0)