diff --git a/deps/rabbit/src/rabbit_exchange_parameters.erl b/deps/rabbit/src/rabbit_exchange_parameters.erl index 04670b4865..1b7a235791 100644 --- a/deps/rabbit/src/rabbit_exchange_parameters.erl +++ b/deps/rabbit/src/rabbit_exchange_parameters.erl @@ -21,13 +21,18 @@ {enables, recovery}]}). register() -> - rabbit_registry:register(runtime_parameter, - ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, ?MODULE), - %% ensure there are no leftovers from before node restart/crash - _ = rabbit_runtime_parameters:clear_component( - ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, - ?INTERNAL_USER), - ok. + case rabbit_registry:register( + runtime_parameter, + ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, ?MODULE) of + ok -> + %% ensure there are no leftovers from before node restart/crash + _ = rabbit_runtime_parameters:clear_component( + ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, + ?INTERNAL_USER), + ok; + {error, _} = Err -> + Err + end. validate(_VHost, ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, _Name, _Term, _User) -> ok. diff --git a/deps/rabbit/src/rabbit_queue_decorator.erl b/deps/rabbit/src/rabbit_queue_decorator.erl index 7e672c0dd9..9e66243947 100644 --- a/deps/rabbit/src/rabbit_queue_decorator.erl +++ b/deps/rabbit/src/rabbit_queue_decorator.erl @@ -49,14 +49,22 @@ active(Q) when ?is_amqqueue(Q) -> list() -> [M || {_, M} <- rabbit_registry:lookup_all(queue_decorator)]. register(TypeName, ModuleName) -> - rabbit_registry:register(queue_decorator, TypeName, ModuleName), - [maybe_recover(Q) || Q <- rabbit_amqqueue:list()], - ok. + case rabbit_registry:register(queue_decorator, TypeName, ModuleName) of + ok -> + rabbit_misc:for_each_while_ok( + fun maybe_recover/1, rabbit_amqqueue:list()); + {error, _} = Err -> + Err + end. unregister(TypeName) -> - rabbit_registry:unregister(queue_decorator, TypeName), - [maybe_recover(Q) || Q <- rabbit_amqqueue:list()], - ok. + case rabbit_registry:unregister(queue_decorator, TypeName) of + ok -> + rabbit_misc:for_each_while_ok( + fun maybe_recover/1, rabbit_amqqueue:list()); + {error, _} = Err -> + Err + end. maybe_recover(Q0) when ?is_amqqueue(Q0) -> Name = amqqueue:get_name(Q0),