From 00571eb9b93931df8f3794941d102055407613c0 Mon Sep 17 00:00:00 2001 From: JaySon-Huang Date: Tue, 9 Jun 2026 20:02:46 +0800 Subject: [PATCH 1/3] Add tikv_worker_servers to embed/examples/cluster/topology.example.yaml Signed-off-by: JaySon-Huang --- embed/examples/cluster/topology.example.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/embed/examples/cluster/topology.example.yaml b/embed/examples/cluster/topology.example.yaml index 6f24336fcc..7b49f6ca3a 100644 --- a/embed/examples/cluster/topology.example.yaml +++ b/embed/examples/cluster/topology.example.yaml @@ -226,6 +226,19 @@ tikv_servers: # config: # log.level: warn +tikv_worker_servers: + - host: 10.0.1.22 + # ssh_port: 22 + port: 19000 + deploy_dir: "/data1/tidb-deploy/tikv-worker-19000" + data_dir: "/data1/tidb-data/tikv-worker-19000" + log_dir: "/data1/tidb-deploy/tikv-worker-19000/log" + # numa_node: "0" + # config: + # schema-manager.enabled: true + # schema-manager.dir: /data1/tidb-data/tikv-worker-19000/data/schemas + # schema-manager.keyspace-refresh-interval: "500ms" + # # Server configs are used to specify the configuration of TiFlash Servers. tiflash_servers: # # The ip address of the TiFlash Server. From 42cb616a8c6d4188cf1713e4993d2766f25d64c4 Mon Sep 17 00:00:00 2001 From: JaySon-Huang Date: Tue, 30 Jun 2026 20:54:24 +0800 Subject: [PATCH 2/3] example: only keep tikv_worker_servers without config Signed-off-by: JaySon-Huang --- embed/examples/cluster/topology.example.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/embed/examples/cluster/topology.example.yaml b/embed/examples/cluster/topology.example.yaml index 7b49f6ca3a..7426a3bbff 100644 --- a/embed/examples/cluster/topology.example.yaml +++ b/embed/examples/cluster/topology.example.yaml @@ -235,9 +235,7 @@ tikv_worker_servers: log_dir: "/data1/tidb-deploy/tikv-worker-19000/log" # numa_node: "0" # config: - # schema-manager.enabled: true - # schema-manager.dir: /data1/tidb-data/tikv-worker-19000/data/schemas - # schema-manager.keyspace-refresh-interval: "500ms" + # schema-manager.enabled: false # # Server configs are used to specify the configuration of TiFlash Servers. tiflash_servers: From 003e1e091da3dd04178d52dadd5868383119fb27 Mon Sep 17 00:00:00 2001 From: JaySon-Huang Date: Mon, 6 Jul 2026 18:00:13 +0800 Subject: [PATCH 3/3] add test case about tikv-worker in spec Signed-off-by: JaySon-Huang --- components/cluster/command/template.go | 2 +- embed/examples/cluster/topology.example.yaml | 3 +- pkg/cluster/spec/server_config.go | 2 +- pkg/cluster/spec/spec_test.go | 66 ++++++++++++++++++++ 4 files changed, 70 insertions(+), 3 deletions(-) diff --git a/components/cluster/command/template.go b/components/cluster/command/template.go index ac354cd436..d27ed8d5fe 100644 --- a/components/cluster/command/template.go +++ b/components/cluster/command/template.go @@ -95,7 +95,7 @@ func newTemplateCmd() *cobra.Command { return nil } - // redner template + // render template // validate arch if localOpt.GlobalArch != "amd64" && localOpt.GlobalArch != "arm64" { diff --git a/embed/examples/cluster/topology.example.yaml b/embed/examples/cluster/topology.example.yaml index 7426a3bbff..f1df8f0c56 100644 --- a/embed/examples/cluster/topology.example.yaml +++ b/embed/examples/cluster/topology.example.yaml @@ -59,6 +59,7 @@ monitored: # server_configs: # tidb: # tikv: + # tikv-worker: # pd: # tiflash: # tiflash-learner: @@ -367,7 +368,7 @@ monitoring_servers: # ssh_port: 22 # # Prometheus Service communication port. # port: 9090 - # # ng-monitoring servive communication port + # # ng-monitoring service communication port # ng_port: 12020 # # Prometheus deployment file, startup script, configuration file storage directory. # deploy_dir: "/tidb-deploy/prometheus-8249" diff --git a/pkg/cluster/spec/server_config.go b/pkg/cluster/spec/server_config.go index d4818aa7d4..20ccf96198 100644 --- a/pkg/cluster/spec/server_config.go +++ b/pkg/cluster/spec/server_config.go @@ -109,7 +109,7 @@ func FoldMap(ms map[string]any) map[string]any { return result } -// FlattenMap convert mutil-layer map to single layer +// FlattenMap convert multi-layer map to single layer func FlattenMap(ms map[string]any) map[string]any { result := map[string]any{} for k, v := range ms { diff --git a/pkg/cluster/spec/spec_test.go b/pkg/cluster/spec/spec_test.go index d986d42ebe..25b149145e 100644 --- a/pkg/cluster/spec/spec_test.go +++ b/pkg/cluster/spec/spec_test.go @@ -111,6 +111,9 @@ cdc_servers: kvcdc_servers: - host: 172.16.5.244 data_dir: "tikv-cdc-data" +tikv_worker_servers: + - host: 172.16.5.250 + data_dir: "tikv-worker-data" `), &topo) require.NoError(t, err) require.Equal(t, "test1", topo.GlobalOptions.User) @@ -129,6 +132,10 @@ kvcdc_servers: require.Equal(t, 220, topo.TiKVCDCServers[0].SSHPort) require.Equal(t, "test-deploy/tikv-cdc-8600", topo.TiKVCDCServers[0].DeployDir) require.Equal(t, "tikv-cdc-data", topo.TiKVCDCServers[0].DataDir) + + require.Equal(t, 220, topo.TiKVWorkerServers[0].SSHPort) + require.Equal(t, "test-deploy/tikv-worker-19000", topo.TiKVWorkerServers[0].DeployDir) + require.Equal(t, "tikv-worker-data", topo.TiKVWorkerServers[0].DataDir) } func TestDataDirAbsolute(t *testing.T) { @@ -152,6 +159,11 @@ kvcdc_servers: data_dir: "tikv-cdc-data" - host: 172.16.5.245 port: 33333 +tikv_worker_servers: + - host: 172.16.5.251 + data_dir: "worker-data" + - host: 172.16.5.252 + port: 29000 `), &topo) require.NoError(t, err) @@ -163,6 +175,9 @@ kvcdc_servers: require.Equal(t, "tikv-cdc-data", topo.TiKVCDCServers[0].DataDir) require.Equal(t, "/test-data/tikv-cdc-33333", topo.TiKVCDCServers[1].DataDir) + + require.Equal(t, "worker-data", topo.TiKVWorkerServers[0].DataDir) + require.Equal(t, "/test-data/tikv-worker-29000", topo.TiKVWorkerServers[1].DataDir) } func TestGlobalConfig(t *testing.T) { @@ -190,6 +205,9 @@ server_configs: scheduler.max_limit: 20480 kvcdc: gc-ttl: 43200 + tikv_worker: + schema-manager.enabled: false + log.level: info tidb_servers: - host: 172.16.5.138 @@ -209,6 +227,13 @@ kvcdc_servers: port: 8601 config: log-level: "debug" + +tikv_worker_servers: + - host: 172.16.5.253 + - host: 172.16.5.254 + port: 19001 + config: + log.level: debug `), &topo) require.NoError(t, err) require.Equal(t, map[string]any{ @@ -220,6 +245,10 @@ kvcdc_servers: require.Equal(t, map[string]any{ "gc-ttl": 43200, }, topo.ServerConfigs.TiKVCDC) + require.Equal(t, map[string]any{ + "schema-manager.enabled": false, + "log.level": "info", + }, topo.ServerConfigs.TiKVWorker) expected := map[string]any{ "status": map[string]any{ @@ -292,6 +321,18 @@ kvcdc_servers: } got = FoldMap(topo.TiKVCDCServers[1].Config) require.Equal(t, expected, got) + + expected = map[string]any{} + got = FoldMap(topo.TiKVWorkerServers[0].Config) + require.Equal(t, expected, got) + + expected = map[string]any{ + "log": map[string]any{ + "level": "debug", + }, + } + got = FoldMap(topo.TiKVWorkerServers[1].Config) + require.Equal(t, expected, got) } func TestGlobalConfigPatch(t *testing.T) { @@ -363,6 +404,9 @@ server_configs: config.item3.item6: 600 kvcdc: gc-ttl: 43200 + tikv_worker: + schema-manager.enabled: false + log.level: info tikv_servers: - host: 172.16.5.138 @@ -375,6 +419,11 @@ kvcdc_servers: config: log-level: "debug" +tikv_worker_servers: + - host: 172.16.5.255 + config: + log.level: debug + `), &topo) require.NoError(t, err) expected := `# WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten! @@ -408,6 +457,23 @@ log-level = "debug" got, err = Merge2Toml("kvcdc", topo.ServerConfigs.TiKVCDC, topo.TiKVCDCServers[0].Config) require.NoError(t, err) require.Equal(t, expected, string(got)) + + expected = `# WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten! +# You can use 'tiup cluster edit-config' and 'tiup cluster reload' to update the configuration +# All configuration items you want to change can be added to: +# server_configs: +# tikv-worker: +# aa.b1.c3: value +# aa.b2.c4: value +[log] +level = "debug" + +[schema-manager] +enabled = false +` + got, err = Merge2Toml("tikv-worker", topo.ServerConfigs.TiKVWorker, topo.TiKVWorkerServers[0].Config) + require.NoError(t, err) + require.Equal(t, expected, string(got)) } func TestMerge2Toml2(t *testing.T) {