From 1ffc7d5d9ec98018d8a206b699217158c48f01d5 Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Fri, 24 May 2024 13:58:06 +0200 Subject: [PATCH] fix(dsrepl): Treat all exceptions from storage layer as recoverable --- apps/emqx_durable_storage/src/emqx_ds_replication_layer.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/emqx_durable_storage/src/emqx_ds_replication_layer.erl b/apps/emqx_durable_storage/src/emqx_ds_replication_layer.erl index ee4e71812..896999af7 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_replication_layer.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_replication_layer.erl @@ -566,7 +566,11 @@ list_nodes() -> EXPR catch error:RPCError__ = {erpc, _} -> - {error, recoverable, RPCError__} + {error, recoverable, RPCError__}; + %% Note: remote node never _throws_ unrecoverable errors, so + %% we can assume that all exceptions are transient. + EC__:RPCError__:Stack__ -> + {error, recoverable, #{EC__ => RPCError__, stacktrace => Stack__}} end ).