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}]}).
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.

View File

@ -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),