Skip to content

Commit ba19262

Browse files
committed
Ra 2.16.5 - bug fixes and minor improvements
Ra improvements: * Don't allow a non-voter to start elections * Register with ra directory before initialising ra server. by @kjnilsson in #524 * Trigger tick_timeout immedately after entering leader state. * Set a configurable segment max size This commit also includes a change to turn the quorum queue become leader callback to become a noone and instead relay on the more promptly tick_handler to handle the meta data store update after a leader election. This more prompt tick update means there should be a much shorter gap between the queue metrics being deleted from the old leader node to them being available again on the new node resulting in smoother message count metrics. fix test that relied on waiting on too simplictic a property before asserting.
1 parent 44657cd commit ba19262

File tree

3 files changed

+49
-50
lines changed

3 files changed

+49
-50
lines changed

deps/rabbit/src/rabbit_quorum_queue.erl

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

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

434436
become_leader0(QName, Name) ->
435437
Fun = fun (Q1) ->
@@ -683,8 +685,8 @@ repair_leader_record(Q, Self) ->
683685
ok;
684686
_ ->
685687
QName = amqqueue:get_name(Q),
686-
rabbit_log:debug("~ts: repairing leader record",
687-
[rabbit_misc:rs(QName)]),
688+
rabbit_log:debug("~ts: updating leader record to current node ~b",
689+
[rabbit_misc:rs(QName), Node]),
688690
{_, Name} = erlang:process_info(Self, registered_name),
689691
ok = become_leader0(QName, Name),
690692
ok

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)