From 56a40d61aee1e7a14272d6543e25558ac1c062e7 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 26 Mar 2024 13:06:56 +0800 Subject: [PATCH] fix: bpapi undef abort on old node --- apps/emqx/src/bpapi/emqx_bpapi.erl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/emqx/src/bpapi/emqx_bpapi.erl b/apps/emqx/src/bpapi/emqx_bpapi.erl index 71857f17a..6a962fabc 100644 --- a/apps/emqx/src/bpapi/emqx_bpapi.erl +++ b/apps/emqx/src/bpapi/emqx_bpapi.erl @@ -88,11 +88,10 @@ announce(Node, App) -> {ok, Data} = file:consult(?MODULE:versions_file(App)), %% replicant(5.6.0) will call old core(<5.6.0) announce_fun/2 is undef on old core %% so we just use anonymous function to update. - try - {atomic, ok} = mria:transaction(?COMMON_SHARD, fun ?MODULE:announce_fun/2, [Node, Data]), - ok - catch - error:undef -> + case mria:transaction(?COMMON_SHARD, fun ?MODULE:announce_fun/2, [Node, Data]) of + {atomic, ok} -> + ok; + {aborted, {undef, [{?MODULE, announce_fun, _, _} | _]}} -> {atomic, ok} = mria:transaction( ?COMMON_SHARD, fun() ->