Skip to content

Commit c0b5ebe

Browse files
Merge pull request #4584 from rabbitmq/mergify/bp/v3.9.x/pr-4580
Speed up reimport exchange definitions (backport #4578) (backport #4580)
2 parents f75c194 + b426661 commit c0b5ebe

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)