Skip to content

Commit 630beb3

Browse files
Clear temporary runtime exchange parameters on boot
This makes sure that values that were set right before node failure or restart are not retained.
1 parent 7b864ff commit 630beb3

File tree

3 files changed

+27
-8
lines changed

3 files changed

+27
-8
lines changed

src/rabbit_exchange.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ declare(XName, Type, Durable, AutoDelete, Internal, Args) ->
171171
%%
172172
%% See rabbitmq/rabbitmq-federation#7.
173173
case rabbit_runtime_parameters:lookup(XName#resource.virtual_host,
174-
<<"exchange-delete-in-progress">>,
174+
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT,
175175
XName#resource.name) of
176176
not_found ->
177177
rabbit_misc:execute_mnesia_transaction(
@@ -446,7 +446,7 @@ delete(XName, IfUnused) ->
446446
%%
447447
%% see rabbitmq/rabbitmq-federation#7
448448
rabbit_runtime_parameters:set(XName#resource.virtual_host,
449-
<<"exchange-delete-in-progress">>,
449+
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT,
450450
XName#resource.name, true, none),
451451
call_with_exchange(
452452
XName,
@@ -462,7 +462,7 @@ delete(XName, IfUnused) ->
462462
end)
463463
after
464464
rabbit_runtime_parameters:clear(XName#resource.virtual_host,
465-
<<"exchange-delete-in-progress">>,
465+
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT,
466466
XName#resource.name)
467467
end.
468468

src/rabbit_exchange_parameters.erl

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@
1818

1919
-behaviour(rabbit_runtime_parameter).
2020

21+
-include("rabbit.hrl").
22+
2123
-export([register/0]).
2224
-export([validate/5, notify/4, notify_clear/3]).
2325

26+
-import(rabbit_misc, [pget/2]).
27+
2428
-rabbit_boot_step({?MODULE,
2529
[{description, "exchange parameters"},
2630
{mfa, {rabbit_exchange_parameters, register, []}},
@@ -29,13 +33,17 @@
2933

3034
register() ->
3135
rabbit_registry:register(runtime_parameter,
32-
<<"exchange-delete-in-progress">>, ?MODULE).
36+
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, ?MODULE),
37+
%% ensure there are no leftovers from before node restart/crash
38+
rabbit_runtime_parameters:clear_component(
39+
?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT),
40+
ok.
3341

34-
validate(_VHost, <<"exchange-delete-in-progress">>, _Name, _Term, _User) ->
42+
validate(_VHost, ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, _Name, _Term, _User) ->
3543
ok.
3644

37-
notify(_VHost, <<"exchange-delete-in-progress">>, _Name, _Term) ->
45+
notify(_VHost, ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, _Name, _Term) ->
3846
ok.
3947

40-
notify_clear(_VHost, <<"exchange-delete-in-progress">>, _Name) ->
48+
notify_clear(_VHost, ?EXCHANGE_DELETE_IN_PROGRESS_COMPONENT, _Name) ->
4149
ok.

src/rabbit_runtime_parameters.erl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151

5252
-export([parse_set/5, set/5, set_any/5, clear/3, clear_any/3, list/0, list/1,
5353
list_component/1, list/2, list_formatted/1, list_formatted/3,
54-
lookup/3, value/3, value/4, info_keys/0]).
54+
lookup/3, value/3, value/4, info_keys/0, clear_component/1]).
5555

5656
-export([set_global/2, value_global/1, value_global/2]).
5757

@@ -171,6 +171,17 @@ clear(_, <<"policy">> , _) ->
171171
clear(VHost, Component, Name) ->
172172
clear_any(VHost, Component, Name).
173173

174+
clear_component(Component) ->
175+
case rabbit_runtime_parameters:list_component(Component) of
176+
[] ->
177+
ok;
178+
Xs ->
179+
[rabbit_runtime_parameters:clear(pget(vhost, X),
180+
pget(component, X),
181+
pget(name, X))|| X <- Xs],
182+
ok
183+
end.
184+
174185
clear_any(VHost, Component, Name) ->
175186
Notify = fun () ->
176187
case lookup_component(Component) of

0 commit comments

Comments
 (0)