From c355c9ad500b63de5dcc2774436d4f1afb7ef6a6 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Wed, 22 May 2024 17:22:55 +0200 Subject: [PATCH] fix(dsrepl): properly handle transaction abort during forget site --- .../src/emqx_ds_replication_layer_meta.erl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl b/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl index fa53ecced..387dddbcf 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl @@ -694,12 +694,12 @@ ensure_site() -> forget_node(Node) -> Sites = node_sites(Node), - Results = transaction(fun lists:map/2, [fun ?MODULE:forget_site_trans/1, Sites]), - case [Reason || {error, Reason} <- Results] of - [] -> + Result = transaction(fun lists:map/2, [fun ?MODULE:forget_site_trans/1, Sites]), + case Result of + Ok when is_list(Ok) -> ok; - Errors -> - logger:error("Failed to forget leaving node ~p: ~p", [Node, Errors]) + {error, Reason} -> + logger:error("Failed to forget leaving node ~p: ~p", [Node, Reason]) end. %% @doc Returns sorted list of sites shards are replicated across.