Handle potential {error,_} returns from rabbit_registry (un)register

This mostly fixes dialyzer warnings since rabbit_registry:register/3
and rabbit_registry:unregister/2 may now return errors.
This commit is contained in:
Michael Davis 2024-07-18 12:56:30 -04:00
parent c0b163aacc
commit 7d3dbb8013
No known key found for this signature in database
2 changed files with 26 additions and 13 deletions

View File

@ -21,13 +21,18 @@
{enables, recovery}]}). {enables, recovery}]}).
register() -> register() ->
rabbit_registry:register(runtime_parameter, case rabbit_registry:register(
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, ?MODULE), runtime_parameter,
%% ensure there are no leftovers from before node restart/crash ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, ?MODULE) of
_ = rabbit_runtime_parameters:clear_component( ok ->
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, %% ensure there are no leftovers from before node restart/crash
?INTERNAL_USER), _ = rabbit_runtime_parameters:clear_component(
ok. ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT,
?INTERNAL_USER),
ok;
{error, _} = Err ->
Err
end.
validate(_VHost, ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, _Name, _Term, _User) -> validate(_VHost, ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, _Name, _Term, _User) ->
ok. ok.

View File

@ -49,14 +49,22 @@ active(Q) when ?is_amqqueue(Q) ->
list() -> [M || {_, M} <- rabbit_registry:lookup_all(queue_decorator)]. list() -> [M || {_, M} <- rabbit_registry:lookup_all(queue_decorator)].
register(TypeName, ModuleName) -> register(TypeName, ModuleName) ->
rabbit_registry:register(queue_decorator, TypeName, ModuleName), case rabbit_registry:register(queue_decorator, TypeName, ModuleName) of
[maybe_recover(Q) || Q <- rabbit_amqqueue:list()], ok ->
ok. rabbit_misc:for_each_while_ok(
fun maybe_recover/1, rabbit_amqqueue:list());
{error, _} = Err ->
Err
end.
unregister(TypeName) -> unregister(TypeName) ->
rabbit_registry:unregister(queue_decorator, TypeName), case rabbit_registry:unregister(queue_decorator, TypeName) of
[maybe_recover(Q) || Q <- rabbit_amqqueue:list()], ok ->
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) -> maybe_recover(Q0) when ?is_amqqueue(Q0) ->
Name = amqqueue:get_name(Q0), Name = amqqueue:get_name(Q0),