Skip to content

Commit b426661

Browse files
ansdmergify-bot
authored andcommitted
Speed up reimport exchange definitions
Apply the same to exchanges what was done for queues in #4524. Re-importing 100,000 exchanges in a 7 node cluster takes 25 seconds before this commit and 5 seconds after this commit. (cherry picked from commit 41bb414) (cherry picked from commit 5ac0006)
1 parent f75c194 commit b426661

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

deps/rabbit/src/rabbit_definitions.erl

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -579,17 +579,22 @@ add_exchange_int(_Exchange, R = #resource{kind = exchange,
579579
rabbit_log:warning("Skipping import of an exchange whose name begins with 'amq.', "
580580
"name: ~s, acting user: ~s", [Name, ActingUser]);
581581
add_exchange_int(Exchange, Name, ActingUser) ->
582-
Internal = case maps:get(internal, Exchange, undefined) of
583-
undefined -> false; %% =< 2.2.0
584-
I -> I
585-
end,
586-
rabbit_exchange:declare(Name,
587-
rabbit_exchange:check_type(maps:get(type, Exchange, undefined)),
588-
maps:get(durable, Exchange, undefined),
589-
maps:get(auto_delete, Exchange, undefined),
590-
Internal,
591-
args(maps:get(arguments, Exchange, undefined)),
592-
ActingUser).
582+
case rabbit_exchange:lookup(Name) of
583+
{ok, _} ->
584+
ok;
585+
{error, not_found} ->
586+
Internal = case maps:get(internal, Exchange, undefined) of
587+
undefined -> false; %% =< 2.2.0
588+
I -> I
589+
end,
590+
rabbit_exchange:declare(Name,
591+
rabbit_exchange:check_type(maps:get(type, Exchange, undefined)),
592+
maps:get(durable, Exchange, undefined),
593+
maps:get(auto_delete, Exchange, undefined),
594+
Internal,
595+
args(maps:get(arguments, Exchange, undefined)),
596+
ActingUser)
597+
end.
593598

594599
add_binding(Binding, ActingUser) ->
595600
DestType = dest_type(Binding),

0 commit comments

Comments
 (0)