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

fix: clean self node's cluster commit when leave cluster
This commit is contained in:
JianBo He 2024-04-09 18:30:15 +08:00 committed by GitHub
commit 027d1d9c7a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 5 additions and 2 deletions

View File

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

View File

@ -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]},

View File

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