@@ -43,7 +43,7 @@ start_child({VHost, ShovelName} = Name, Def) ->
43
43
rabbit_log_shovel :debug (" Starting a mirrored supervisor named '~s ' in virtual host '~s '" , [ShovelName , VHost ]),
44
44
Result = case mirrored_supervisor :start_child (
45
45
? SUPERVISOR ,
46
- {Name , {rabbit_shovel_dyn_worker_sup , start_link , [Name , obfuscated_uris_parameters (Def )]},
46
+ {id ( Name ) , {rabbit_shovel_dyn_worker_sup , start_link , [Name , obfuscated_uris_parameters (Def )]},
47
47
transient , ? WORKER_WAIT , worker , [rabbit_shovel_dyn_worker_sup ]}) of
48
48
{ok , _Pid } -> ok ;
49
49
{error , {already_started , _Pid }} -> ok
@@ -58,7 +58,7 @@ obfuscated_uris_parameters(Def) when is_list(Def) ->
58
58
rabbit_shovel_parameters :obfuscate_uris_in_definition (Def ).
59
59
60
60
child_exists (Name ) ->
61
- lists :any (fun ({N , _ , _ , _ }) -> N =:= Name end ,
61
+ lists :any (fun ({{ _ , N } , _ , _ , _ }) -> N =:= Name end ,
62
62
mirrored_supervisor :which_children (? SUPERVISOR )).
63
63
64
64
stop_child ({VHost , ShovelName } = Name ) ->
@@ -67,8 +67,8 @@ stop_child({VHost, ShovelName} = Name) ->
67
67
case get ({shovel_worker_autodelete , Name }) of
68
68
true -> ok ; % % [1]
69
69
_ ->
70
- ok = mirrored_supervisor :terminate_child (? SUPERVISOR , Name ),
71
- ok = mirrored_supervisor :delete_child (? SUPERVISOR , Name ),
70
+ ok = mirrored_supervisor :terminate_child (? SUPERVISOR , id ( Name ) ),
71
+ ok = mirrored_supervisor :delete_child (? SUPERVISOR , id ( Name ) ),
72
72
rabbit_shovel_status :remove (Name )
73
73
end ,
74
74
rabbit_shovel_locks :unlock (LockId ),
@@ -83,10 +83,11 @@ stop_child({VHost, ShovelName} = Name) ->
83
83
% % See rabbit_shovel_worker:terminate/2
84
84
85
85
cleanup_specs () ->
86
- SpecsSet = sets :from_list ([element (1 , S ) || S <- mirrored_supervisor :which_children (? SUPERVISOR )]),
87
- ParamsSet = sets :from_list (rabbit_runtime_parameters :list_component (<<" shovel" >>)),
88
- F = fun (Spec , ok ) ->
89
- _ = mirrored_supervisor :delete_child (? SUPERVISOR , Spec ),
86
+ SpecsSet = sets :from_list ([element (2 , element (1 , S )) || S <- mirrored_supervisor :which_children (? SUPERVISOR )]),
87
+ ParamsSet = sets :from_list ([ {proplists :get_value (vhost , S ), proplists :get_value (name , S )}
88
+ || S <- rabbit_runtime_parameters :list_component (<<" shovel" >>) ]),
89
+ F = fun (Name , ok ) ->
90
+ _ = mirrored_supervisor :delete_child (? SUPERVISOR , id (Name )),
90
91
ok
91
92
end ,
92
93
ok = sets :fold (F , ok , sets :subtract (SpecsSet , ParamsSet )).
@@ -95,3 +96,6 @@ cleanup_specs() ->
95
96
96
97
init ([]) ->
97
98
{ok , {{one_for_one , 3 , 10 }, []}}.
99
+
100
+ id ({V , S } = Name ) ->
101
+ {[V , S ], Name }.
0 commit comments