@@ -74,15 +74,18 @@ stop_child({VHost, ShovelName} = Name) ->
74
74
case get ({shovel_worker_autodelete , Name }) of
75
75
true -> ok ; % % [1]
76
76
_ ->
77
- case mirrored_supervisor : terminate_child ( ? SUPERVISOR , id (Name )) of
77
+ case stop_and_delete_child ( id (Name )) of
78
78
ok ->
79
- ok = mirrored_supervisor : delete_child ( ? SUPERVISOR , id ( Name )) ;
79
+ ok ;
80
80
{error , not_found } ->
81
- % % try older format, pre 3.13.0 and 3.12.8. See rabbitmq/rabbitmq-server#9894.
82
- case mirrored_supervisor :terminate_child (? SUPERVISOR , old_id (Name )) of
83
- ok ->
84
- ok = mirrored_supervisor :delete_child (? SUPERVISOR , old_id (Name ));
85
- {error , not_found } ->
81
+ case rabbit_khepri :is_enabled () of
82
+ true ->
83
+ % % Old id format is not supported by and cannot exist in Khepri
84
+ ok ;
85
+ false ->
86
+ % % try older format, pre 3.13.0 and 3.12.8.
87
+ % % See rabbitmq/rabbitmq-server#9894.
88
+ _ = stop_and_delete_child (old_id (Name )),
86
89
ok
87
90
end
88
91
end ,
@@ -91,6 +94,14 @@ stop_child({VHost, ShovelName} = Name) ->
91
94
rabbit_shovel_locks :unlock (LockId ),
92
95
ok .
93
96
97
+ stop_and_delete_child (Id ) ->
98
+ case mirrored_supervisor :terminate_child (? SUPERVISOR , Id ) of
99
+ ok ->
100
+ ok = mirrored_supervisor :delete_child (? SUPERVISOR , Id );
101
+ {error , not_found } = Error ->
102
+ Error
103
+ end .
104
+
94
105
% % [1] An autodeleting worker removes its own parameter, and thus ends
95
106
% % up here via the parameter callback. It is a transient worker that
96
107
% % is just about to terminate normally - so we don't need to tell the
0 commit comments