From a1495689c0d890903353ff052f306ee76f133728 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Mon, 8 Apr 2024 10:21:00 +0800 Subject: [PATCH] fix: clean self node's cluster commit when leave cluster --- apps/emqx_conf/src/emqx_cluster_rpc.erl | 3 ++- changes/ce/fix-12843.en.md | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 changes/ce/fix-12843.en.md diff --git a/apps/emqx_conf/src/emqx_cluster_rpc.erl b/apps/emqx_conf/src/emqx_cluster_rpc.erl index 39d471ed9..37f052f56 100644 --- a/apps/emqx_conf/src/emqx_cluster_rpc.erl +++ b/apps/emqx_conf/src/emqx_cluster_rpc.erl @@ -224,6 +224,7 @@ reset() -> gen_server:call(?MODULE, reset). status() -> 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(node()). @@ -367,7 +368,7 @@ handle_call({fast_forward_to_commit, ToTnxId}, _From, State) -> NodeId = do_fast_forward_to_commit(ToTnxId, State), {reply, NodeId, State, catch_up(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}}; handle_call(_, _From, State) -> {reply, ok, State, catch_up(State)}. diff --git a/changes/ce/fix-12843.en.md b/changes/ce/fix-12843.en.md new file mode 100644 index 000000000..f0ba2af8c --- /dev/null +++ b/changes/ce/fix-12843.en.md @@ -0,0 +1,2 @@ +Fixed cluster_rpc_commit tnx_id was not properly cleanup after 'cluster leave' on replicator nodes, +The tnx_id of the core node will be deleted before, resulting in the failure of the core node update configuration.