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 ).