Merge pull request #4524 from rabbitmq/speed-up-reimport-definitions
Speed up reimport queue definitions
This commit is contained in:
commit
6710b34ad9
|
|
@ -683,12 +683,17 @@ add_queue_int(_Queue, R = #resource{kind = queue,
|
||||||
rabbit_log:warning("Skipping import of a queue whose name begins with 'amq.', "
|
rabbit_log:warning("Skipping import of a queue whose name begins with 'amq.', "
|
||||||
"name: ~s, acting user: ~s", [Name, ActingUser]);
|
"name: ~s, acting user: ~s", [Name, ActingUser]);
|
||||||
add_queue_int(Queue, Name, ActingUser) ->
|
add_queue_int(Queue, Name, ActingUser) ->
|
||||||
rabbit_amqqueue:declare(Name,
|
case rabbit_amqqueue:lookup(Name) of
|
||||||
maps:get(durable, Queue, undefined),
|
{ok, _} ->
|
||||||
maps:get(auto_delete, Queue, undefined),
|
ok;
|
||||||
args(maps:get(arguments, Queue, undefined)),
|
{error, not_found} ->
|
||||||
none,
|
rabbit_amqqueue:declare(Name,
|
||||||
ActingUser).
|
maps:get(durable, Queue, undefined),
|
||||||
|
maps:get(auto_delete, Queue, undefined),
|
||||||
|
args(maps:get(arguments, Queue, undefined)),
|
||||||
|
none,
|
||||||
|
ActingUser)
|
||||||
|
end.
|
||||||
|
|
||||||
add_exchange(Exchange, ActingUser) ->
|
add_exchange(Exchange, ActingUser) ->
|
||||||
add_exchange_int(Exchange, r(exchange, Exchange), ActingUser).
|
add_exchange_int(Exchange, r(exchange, Exchange), ActingUser).
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ groups() ->
|
||||||
import_case11,
|
import_case11,
|
||||||
import_case12,
|
import_case12,
|
||||||
import_case13,
|
import_case13,
|
||||||
|
import_case13a,
|
||||||
import_case14,
|
import_case14,
|
||||||
import_case15,
|
import_case15,
|
||||||
import_case16,
|
import_case16,
|
||||||
|
|
@ -230,6 +231,31 @@ import_case13(Config) ->
|
||||||
Skip
|
Skip
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
import_case13a(Config) ->
|
||||||
|
case rabbit_ct_broker_helpers:enable_feature_flag(Config, quorum_queue) of
|
||||||
|
ok ->
|
||||||
|
import_file_case(Config, "case13"),
|
||||||
|
VHost = <<"/">>,
|
||||||
|
QueueName = <<"definitions.import.case13.qq.1">>,
|
||||||
|
QueueIsImported =
|
||||||
|
fun () ->
|
||||||
|
case queue_lookup(Config, VHost, QueueName) of
|
||||||
|
{ok, _} -> true;
|
||||||
|
_ -> false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
rabbit_ct_helpers:await_condition(QueueIsImported, 20000),
|
||||||
|
{ok, Q} = queue_lookup(Config, VHost, QueueName),
|
||||||
|
|
||||||
|
%% We expect that importing an existing queue (i.e. same vhost and name)
|
||||||
|
%% but with different arguments and different properties is a no-op.
|
||||||
|
import_file_case(Config, "case13a"),
|
||||||
|
timer:sleep(1000),
|
||||||
|
?assertMatch({ok, Q}, queue_lookup(Config, VHost, QueueName));
|
||||||
|
Skip ->
|
||||||
|
Skip
|
||||||
|
end.
|
||||||
|
|
||||||
import_case14(Config) -> import_file_case(Config, "case14").
|
import_case14(Config) -> import_file_case(Config, "case14").
|
||||||
%% contains a user with tags as a list
|
%% contains a user with tags as a list
|
||||||
import_case15(Config) -> import_file_case(Config, "case15").
|
import_case15(Config) -> import_file_case(Config, "case15").
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
{
|
||||||
|
"bindings": [],
|
||||||
|
"exchanges": [],
|
||||||
|
"global_parameters": [
|
||||||
|
{
|
||||||
|
"name": "cluster_name",
|
||||||
|
"value": "rabbit@localhost"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": [],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"configure": ".*",
|
||||||
|
"read": ".*",
|
||||||
|
"user": "guest",
|
||||||
|
"vhost": "/",
|
||||||
|
"write": ".*"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"policies": [],
|
||||||
|
"queues": [
|
||||||
|
{
|
||||||
|
"arguments": {
|
||||||
|
"x-max-length": 7,
|
||||||
|
"x-queue-type": "stream"
|
||||||
|
},
|
||||||
|
"auto_delete": true,
|
||||||
|
"durable": false,
|
||||||
|
"name": "definitions.import.case13.qq.1",
|
||||||
|
"type": "stream",
|
||||||
|
"vhost": "/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rabbit_version": "3.8.6.gad0c0bd",
|
||||||
|
"rabbitmq_version": "3.8.6.gad0c0bd",
|
||||||
|
"topic_permissions": [],
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"hashing_algorithm": "rabbit_password_hashing_sha256",
|
||||||
|
"name": "guest",
|
||||||
|
"password_hash": "e8lL5PHYcbv3Pd53EUoTOMnVDmsLDgVJXqSQMT+mrO4LVIdW",
|
||||||
|
"tags": "administrator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vhosts": [
|
||||||
|
{
|
||||||
|
"limits": [],
|
||||||
|
"metadata": {
|
||||||
|
"description": "Default virtual host",
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"name": "/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue