From bf326acd7bfcd4d154e06062e8d312b529a54efc Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 23 May 2024 14:34:27 +0200 Subject: [PATCH] fix(dsrepl): handle stopping non-yet-running shard supervisor --- .../src/emqx_ds_builtin_db_sup.erl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds_builtin_db_sup.erl b/apps/emqx_durable_storage/src/emqx_ds_builtin_db_sup.erl index b2a461e7a..747f8241f 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_builtin_db_sup.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_builtin_db_sup.erl @@ -79,11 +79,15 @@ start_shard({DB, Shard}) -> start_egress({DB, Shard}) -> supervisor:start_child(?via(#?egress_sup{db = DB}), egress_spec(DB, Shard)). --spec stop_shard(emqx_ds_storage_layer:shard_id()) -> ok. +-spec stop_shard(emqx_ds_storage_layer:shard_id()) -> ok | {error, not_found}. stop_shard({DB, Shard}) -> Sup = ?via(#?shards_sup{db = DB}), - ok = supervisor:terminate_child(Sup, Shard), - ok = supervisor:delete_child(Sup, Shard). + case supervisor:terminate_child(Sup, Shard) of + ok -> + supervisor:delete_child(Sup, Shard); + {error, Reason} -> + {error, Reason} + end. -spec terminate_storage(emqx_ds_storage_layer:shard_id()) -> ok | {error, _Reason}. terminate_storage({DB, Shard}) ->