Forráskód Böngészése

Merge pull request #12843 from zhongwencool/fix-replica-node-leave

fix: clean self node's cluster commit when leave cluster
JianBo He 1 éve
szülő
commit
027d1d9c7a

+ 2 - 1
apps/emqx_conf/src/emqx_cluster_rpc.erl

@@ -224,6 +224,7 @@ reset() -> gen_server:call(?MODULE, reset).
 status() ->
 status() ->
     transaction(fun ?MODULE:trans_status/0, []).
     transaction(fun ?MODULE:trans_status/0, []).
 
 
+%% DO NOT delete this on_leave_clean/0, It's use when rpc before v560.
 on_leave_clean() ->
 on_leave_clean() ->
     on_leave_clean(node()).
     on_leave_clean(node()).
 
 
@@ -367,7 +368,7 @@ handle_call({fast_forward_to_commit, ToTnxId}, _From, State) ->
     NodeId = do_fast_forward_to_commit(ToTnxId, State),
     NodeId = do_fast_forward_to_commit(ToTnxId, State),
     {reply, NodeId, State, catch_up(State)};
     {reply, NodeId, State, catch_up(State)};
 handle_call(on_leave, _From, State) ->
 handle_call(on_leave, _From, State) ->
-    {atomic, ok} = transaction(fun ?MODULE:on_leave_clean/0, []),
+    {atomic, ok} = transaction(fun ?MODULE:on_leave_clean/1, [node()]),
     {reply, ok, State#{is_leaving := true}};
     {reply, ok, State#{is_leaving := true}};
 handle_call(_, _From, State) ->
 handle_call(_, _From, State) ->
     {reply, ok, State, catch_up(State)}.
     {reply, ok, State, catch_up(State)}.

+ 1 - 1
apps/emqx_conf/src/emqx_conf.app.src

@@ -1,6 +1,6 @@
 {application, emqx_conf, [
 {application, emqx_conf, [
     {description, "EMQX configuration management"},
     {description, "EMQX configuration management"},
-    {vsn, "0.1.35"},
+    {vsn, "0.1.36"},
     {registered, []},
     {registered, []},
     {mod, {emqx_conf_app, []}},
     {mod, {emqx_conf_app, []}},
     {applications, [kernel, stdlib]},
     {applications, [kernel, stdlib]},

+ 2 - 0
changes/ce/fix-12843.en.md

@@ -0,0 +1,2 @@
+Fixed `cluster_rpc_commit` transaction ID cleanup procedure after `cluster leave` on replicant nodes.
+Previously, the transaction id of the core node would be deleted prematurely, blocking configuration updates on the core node.