Skip to content

Commit 5dac11f

Browse files
Merge pull request #2426 from rabbitmq/fix-queue-args-definitions
Fix parsing of queue arguments on definitions list (cherry picked from commit a0a1af4)
1 parent 46bf724 commit 5dac11f

File tree

3 files changed

+80
-3
lines changed

3 files changed

+80
-3
lines changed

src/rabbit_definitions.erl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -663,14 +663,13 @@ queue_definition(Q) ->
663663
rabbit_quorum_queue -> quorum;
664664
T -> T
665665
end,
666-
Arguments = [{Key, Value} || {Key, _Type, Value} <- amqqueue:get_arguments(Q)],
667666
#{
668667
<<"vhost">> => VHost,
669668
<<"name">> => Name,
670669
<<"type">> => Type,
671670
<<"durable">> => amqqueue:is_durable(Q),
672671
<<"auto_delete">> => amqqueue:is_auto_delete(Q),
673-
<<"arguments">> => rabbit_misc:amqp_table(Arguments)
672+
<<"arguments">> => rabbit_misc:amqp_table(amqqueue:get_arguments(Q))
674673
}.
675674

676675
list_bindings() ->

test/definition_import_SUITE.erl

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ groups() ->
4242
import_case9,
4343
import_case10,
4444
import_case11,
45-
import_case12
45+
import_case12,
46+
import_case13
4647
]},
4748
{boot_time_import, [], [
4849
import_on_a_booting_node
@@ -119,6 +120,25 @@ import_case5(Config) ->
119120
import_case11(Config) -> import_file_case(Config, "case11").
120121
import_case12(Config) -> import_invalid_file_case(Config, "failing_case12").
121122

123+
import_case13(Config) ->
124+
import_file_case(Config, "case13"),
125+
VHost = <<"/">>,
126+
QueueName = <<"definitions.import.case13.qq.1">>,
127+
QueueIsImported = fun () ->
128+
case queue_lookup(Config, VHost, QueueName) of
129+
{ok, _} -> true;
130+
_ -> false
131+
end
132+
end,
133+
rabbit_ct_helpers:await_condition(QueueIsImported, 20000),
134+
{ok, Q} = queue_lookup(Config, VHost, QueueName),
135+
136+
%% see rabbitmq/rabbitmq-server#2400, rabbitmq/rabbitmq-server#2426
137+
?assert(amqqueue:is_quorum(Q)),
138+
?assertEqual([{<<"x-max-length">>, long, 991},
139+
{<<"x-queue-type">>, longstr, <<"quorum">>}],
140+
amqqueue:get_arguments(Q)).
141+
122142
export_import_round_trip_case1(Config) ->
123143
%% case 6 has runtime parameters that do not depend on any plugins
124144
import_file_case(Config, "case6"),
@@ -230,3 +250,6 @@ run_invalid_import_case(Path) ->
230250
ct:fail({failure, Path});
231251
{error, _E} -> ok
232252
end.
253+
254+
queue_lookup(Config, VHost, Name) ->
255+
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [rabbit_misc:r(VHost, queue, Name)]).
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"bindings": [],
3+
"exchanges": [],
4+
"global_parameters": [
5+
{
6+
"name": "cluster_name",
7+
"value": "rabbit@localhost"
8+
}
9+
],
10+
"parameters": [],
11+
"permissions": [
12+
{
13+
"configure": ".*",
14+
"read": ".*",
15+
"user": "guest",
16+
"vhost": "/",
17+
"write": ".*"
18+
}
19+
],
20+
"policies": [],
21+
"queues": [
22+
{
23+
"arguments": {
24+
"x-max-length": 991,
25+
"x-queue-type": "quorum"
26+
},
27+
"auto_delete": false,
28+
"durable": true,
29+
"name": "definitions.import.case13.qq.1",
30+
"type": "quorum",
31+
"vhost": "/"
32+
}
33+
],
34+
"rabbit_version": "3.8.6.gad0c0bd",
35+
"rabbitmq_version": "3.8.6.gad0c0bd",
36+
"topic_permissions": [],
37+
"users": [
38+
{
39+
"hashing_algorithm": "rabbit_password_hashing_sha256",
40+
"name": "guest",
41+
"password_hash": "e8lL5PHYcbv3Pd53EUoTOMnVDmsLDgVJXqSQMT+mrO4LVIdW",
42+
"tags": "administrator"
43+
}
44+
],
45+
"vhosts": [
46+
{
47+
"limits": [],
48+
"metadata": {
49+
"description": "Default virtual host",
50+
"tags": []
51+
},
52+
"name": "/"
53+
}
54+
]
55+
}

0 commit comments

Comments
 (0)