summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Cogoluègnes <acogoluegnes@gmail.com>2023-03-09 09:51:55 +0100
committerArnaud Cogoluègnes <acogoluegnes@gmail.com>2023-03-09 09:51:55 +0100
commite8fbb09efcafbf5d9c3ef1a714aff6c9b26f0cbd (patch)
treea21f74c70e52c1742d8022a8c4ce7957799ddfba
parent297d9edc3e3a60ae41f9c854bc262a6e8079cb46 (diff)
downloadrabbitmq-server-git-e8fbb09efcafbf5d9c3ef1a714aff6c9b26f0cbd.tar.gz
Return "precondition failed" on exchange deletion if appropriate
If unused flag is set. This keeps the original behavior.
-rw-r--r--deps/rabbit/src/rabbit_exchange.erl8
1 files changed, 7 insertions, 1 deletions
diff --git a/deps/rabbit/src/rabbit_exchange.erl b/deps/rabbit/src/rabbit_exchange.erl
index 0c64a7125e..1e118f7c4a 100644
--- a/deps/rabbit/src/rabbit_exchange.erl
+++ b/deps/rabbit/src/rabbit_exchange.erl
@@ -428,7 +428,13 @@ delete(XName, IfUnused, Username) ->
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT,
XName#resource.name, true, Username),
Deletions = process_deletions(rabbit_db_exchange:delete(XName, IfUnused)),
- rabbit_binding:notify_deletions(Deletions, Username)
+ case Deletions of
+ {error, _} ->
+ Deletions;
+ _ ->
+ rabbit_binding:notify_deletions(Deletions, Username),
+ ok
+ end
after
rabbit_runtime_parameters:clear(XName#resource.virtual_host,
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT,