Преглед изворни кода

fix: bpapi undef abort on old node

zhongwencool пре 1 година
родитељ
комит
56a40d61ae
1 измењених фајлова са 4 додато и 5 уклоњено
  1. 4 5
      apps/emqx/src/bpapi/emqx_bpapi.erl

+ 4 - 5
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() ->