From 3ed4340145ba93ca266590c31a10e582cbc998a4 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Mon, 10 Jun 2024 22:19:55 +0800 Subject: [PATCH] test: fix cluster_rpc test failed --- apps/emqx_conf/src/emqx_conf_cli.erl | 3 ++- apps/emqx_conf/test/emqx_cluster_rpc_SUITE.erl | 15 ++++++++------- changes/ce/feat-13202.en.md | 1 + 3 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 changes/ce/feat-13202.en.md diff --git a/apps/emqx_conf/src/emqx_conf_cli.erl b/apps/emqx_conf/src/emqx_conf_cli.erl index 6c5f519bb..714198fef 100644 --- a/apps/emqx_conf/src/emqx_conf_cli.erl +++ b/apps/emqx_conf/src/emqx_conf_cli.erl @@ -104,7 +104,8 @@ admins(["fix"]) -> AllConfs = find_running_confs(), case find_inconsistent(Status, AllConfs) of {inconsistent_tnx_id_key, Target, InconsistentKeys} -> - fix_inconsistent_with_raw(Target, InconsistentKeys); + _ = fix_inconsistent_with_raw(Target, InconsistentKeys), + ok; inconsistent_tnx_id -> print_tnx_id_status(Status), ok = emqx_cluster_rpc:reset(), diff --git a/apps/emqx_conf/test/emqx_cluster_rpc_SUITE.erl b/apps/emqx_conf/test/emqx_cluster_rpc_SUITE.erl index bd336a619..4327ef92c 100644 --- a/apps/emqx_conf/test/emqx_cluster_rpc_SUITE.erl +++ b/apps/emqx_conf/test/emqx_cluster_rpc_SUITE.erl @@ -142,13 +142,14 @@ t_commit_ok_but_apply_fail_on_other_node(_Config) -> Res2 = gen_server:call(?NODE3, Call), %% Node2 is retry on tnx_id 1, and should not run Next MFA. ?assertMatch( - {init_failure, #{ - msg := stale_view_of_cluster_state, - retry_times := 2, - cluster_tnx_id := 2, - node_tnx_id := 1, - suggested := _ - }}, + {init_failure, + {error, #{ + msg := stale_view_of_cluster_state, + retry_times := 2, + cluster_tnx_id := 2, + node_tnx_id := 1, + suggested := _ + }}}, Res1 ), ?assertEqual(Res1, Res2), diff --git a/changes/ce/feat-13202.en.md b/changes/ce/feat-13202.en.md new file mode 100644 index 000000000..6871f5acc --- /dev/null +++ b/changes/ce/feat-13202.en.md @@ -0,0 +1 @@ +Introduce `emqx_cli conf cluster_sync fix` to address cluster inconsistencies. It synchronizes the configuration of the node with the largest `tnx_id` to all nodes.