From 95e7df054bae56a8c37aae02715f20a0c63d8d2f Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Wed, 8 Feb 2023 19:05:18 +0800 Subject: [PATCH 1/7] Add telementry for distributed reorg tasks. --- ddl/dist_owner.go | 9 ++++++++- metrics/telemetry.go | 10 ++++++++++ telemetry/data_feature_usage_test.go | 30 ++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/ddl/dist_owner.go b/ddl/dist_owner.go index d10491fd0da3e..aca1d220b0a1f 100644 --- a/ddl/dist_owner.go +++ b/ddl/dist_owner.go @@ -22,6 +22,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/meta" + "github.com/pingcap/tidb/metrics" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/sessionctx" @@ -33,7 +34,10 @@ import ( ) // CheckBackfillJobFinishInterval is export for test. -var CheckBackfillJobFinishInterval = 300 * time.Millisecond +var ( + CheckBackfillJobFinishInterval = 300 * time.Millisecond + telemetryDistReorgUsage = metrics.TelemetryDistReorgCnt +) func initDistReorg(reorgMeta *model.DDLReorgMeta, store kv.Storage, schemaID int64, tblInfo *model.TableInfo) error { tbl, err := getTable(store, schemaID, tblInfo) @@ -47,6 +51,9 @@ func initDistReorg(reorgMeta *model.DDLReorgMeta, store kv.Storage, schemaID int isDistReorg = false } reorgMeta.IsDistReorg = isDistReorg + if isDistReorg { + metrics.TelemetryDistReorgCnt.Inc() + } return nil } diff --git a/metrics/telemetry.go b/metrics/telemetry.go index 591823f9952d9..1a91bbdb0f4f0 100644 --- a/metrics/telemetry.go +++ b/metrics/telemetry.go @@ -169,6 +169,13 @@ var ( Name: "compact_partition_usage", Help: "Counter of compact table partition", }) + TelemetryDistReorgCnt = prometheus.NewCounter( + prometheus.CounterOpts{ + Namespace: "tidb", + Subsystem: "telemetry", + Name: "Distributed_reorg_count", + Help: "Counter of usage of distributed reorg DDL tasks count", + }) ) // readCounter reads the value of a prometheus.Counter. @@ -386,6 +393,7 @@ type DDLUsageCounter struct { AddIndexIngestUsed int64 `json:"add_index_ingest_used"` MetadataLockUsed bool `json:"metadata_lock_used"` FlashbackClusterUsed int64 `json:"flashback_cluster_used"` + DistReorgUsed int64 `json:"dist_reorg_used"` } // Sub returns the difference of two counters. @@ -393,6 +401,7 @@ func (a DDLUsageCounter) Sub(rhs DDLUsageCounter) DDLUsageCounter { return DDLUsageCounter{ AddIndexIngestUsed: a.AddIndexIngestUsed - rhs.AddIndexIngestUsed, FlashbackClusterUsed: a.FlashbackClusterUsed - rhs.FlashbackClusterUsed, + DistReorgUsed: a.DistReorgUsed - rhs.DistReorgUsed, } } @@ -401,6 +410,7 @@ func GetDDLUsageCounter() DDLUsageCounter { return DDLUsageCounter{ AddIndexIngestUsed: readCounter(TelemetryAddIndexIngestCnt), FlashbackClusterUsed: readCounter(TelemetryFlashbackClusterCnt), + DistReorgUsed: readCounter(TelemetryDistReorgCnt), } } diff --git a/telemetry/data_feature_usage_test.go b/telemetry/data_feature_usage_test.go index c8932cd27e35b..8652ac7958230 100644 --- a/telemetry/data_feature_usage_test.go +++ b/telemetry/data_feature_usage_test.go @@ -576,6 +576,36 @@ func TestAddIndexAccelerationAndMDL(t *testing.T) { require.Equal(t, true, usage.DDLUsageCounter.MetadataLockUsed) } +func TestDistReorgUsage(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + usage, err := telemetry.GetFeatureUsage(tk.Session()) + require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) + require.NoError(t, err) + + allow := variable.DDLEnableDistributeReorg.Load() + require.Equal(t, false, allow) + tk.MustExec("use test") + tk.MustExec("drop table if exists tele_t") + tk.MustExec("create table tele_t(id int, b int)") + tk.MustExec("insert into tele_t values(1,1),(2,2);") + tk.MustExec("alter table tele_t add index idx_org(b)") + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) + + tk.MustExec("set @@global.tidb_ddl_distribute_reorg = on") + allow = variable.DDLEnableDistributeReorg.Load() + require.Equal(t, true, allow) + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) + tk.MustExec("alter table tele_t add index idx_new(b)") + usage, err = telemetry.GetFeatureUsage(tk.Session()) + require.NoError(t, err) + require.Equal(t, int64(1), usage.DDLUsageCounter.DistReorgUsed) +} + func TestGlobalMemoryControl(t *testing.T) { store := testkit.CreateMockStore(t) From 1b07fc954d9bf186a7ec82fa1e957df7d108db48 Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Wed, 8 Feb 2023 20:40:53 +0800 Subject: [PATCH 2/7] Set tidb_ddl_distribute_reorg to false. --- telemetry/data_feature_usage_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/telemetry/data_feature_usage_test.go b/telemetry/data_feature_usage_test.go index 8652ac7958230..a31c6035f913f 100644 --- a/telemetry/data_feature_usage_test.go +++ b/telemetry/data_feature_usage_test.go @@ -583,6 +583,7 @@ func TestDistReorgUsage(t *testing.T) { require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) require.NoError(t, err) + tk.MustExec("set @@global.tidb_ddl_distribute_reorg = off") allow := variable.DDLEnableDistributeReorg.Load() require.Equal(t, false, allow) tk.MustExec("use test") From 81502528fadcb50da10825398c9b747636f1a9c0 Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Wed, 8 Feb 2023 22:29:29 +0800 Subject: [PATCH 3/7] Update metrics/telemetry.go Co-authored-by: Weizhen Wang --- metrics/telemetry.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/telemetry.go b/metrics/telemetry.go index 1a91bbdb0f4f0..cba71e9008eb6 100644 --- a/metrics/telemetry.go +++ b/metrics/telemetry.go @@ -173,7 +173,7 @@ var ( prometheus.CounterOpts{ Namespace: "tidb", Subsystem: "telemetry", - Name: "Distributed_reorg_count", + Name: "distributed_reorg_count", Help: "Counter of usage of distributed reorg DDL tasks count", }) ) From 2291f69d66896500b07675492fb10dabec614a6f Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Thu, 9 Feb 2023 10:01:14 +0800 Subject: [PATCH 4/7] Format code style --- metrics/telemetry.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/telemetry.go b/metrics/telemetry.go index e227503bde097..ec5c938a1e1b1 100644 --- a/metrics/telemetry.go +++ b/metrics/telemetry.go @@ -176,7 +176,7 @@ var ( Subsystem: "telemetry", Name: "distributed_reorg_count", Help: "Counter of usage of distributed reorg DDL tasks count", - }) + }) TelemetryStoreBatchedQueryCnt = prometheus.NewCounter( prometheus.CounterOpts{ Namespace: "tidb", From bf0ff4b980c7a4f5a164c69d66b8c4503b88b928 Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Thu, 9 Feb 2023 10:05:45 +0800 Subject: [PATCH 5/7] remove useless line --- metrics/telemetry.go | 1 - 1 file changed, 1 deletion(-) diff --git a/metrics/telemetry.go b/metrics/telemetry.go index ec5c938a1e1b1..a59b207bef88a 100644 --- a/metrics/telemetry.go +++ b/metrics/telemetry.go @@ -169,7 +169,6 @@ var ( Name: "compact_partition_usage", Help: "Counter of compact table partition", }) - TelemetryDistReorgCnt = prometheus.NewCounter( prometheus.CounterOpts{ Namespace: "tidb", From fb99b49ef3388206d2a47af0ce545ec03c7623dd Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Fri, 10 Feb 2023 10:19:49 +0800 Subject: [PATCH 6/7] remove return --- ddl/dist_owner.go | 1 - 1 file changed, 1 deletion(-) diff --git a/ddl/dist_owner.go b/ddl/dist_owner.go index cc42691dc535c..588ef036ef276 100644 --- a/ddl/dist_owner.go +++ b/ddl/dist_owner.go @@ -54,7 +54,6 @@ func initDistReorg(reorgMeta *model.DDLReorgMeta) { if isDistReorg { metrics.TelemetryDistReorgCnt.Inc() } - return nil } // BackfillJobRangeMeta is export for test. From 26c366b9d6548a7f84ee3001f95855fd807f86f3 Mon Sep 17 00:00:00 2001 From: Benjamin2037 Date: Fri, 10 Feb 2023 15:21:33 +0800 Subject: [PATCH 7/7] Edit testcase. --- telemetry/data_feature_usage_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/telemetry/data_feature_usage_test.go b/telemetry/data_feature_usage_test.go index 903c73271a469..67d3afac74d98 100644 --- a/telemetry/data_feature_usage_test.go +++ b/telemetry/data_feature_usage_test.go @@ -589,8 +589,8 @@ func TestDistReorgUsage(t *testing.T) { store := testkit.CreateMockStore(t) tk := testkit.NewTestKit(t, store) usage, err := telemetry.GetFeatureUsage(tk.Session()) - require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) require.NoError(t, err) + initCount := usage.DDLUsageCounter.DistReorgUsed tk.MustExec("set @@global.tidb_ddl_distribute_reorg = off") allow := variable.DDLEnableDistributeReorg.Load() @@ -602,18 +602,18 @@ func TestDistReorgUsage(t *testing.T) { tk.MustExec("alter table tele_t add index idx_org(b)") usage, err = telemetry.GetFeatureUsage(tk.Session()) require.NoError(t, err) - require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) + require.Equal(t, initCount, usage.DDLUsageCounter.DistReorgUsed) tk.MustExec("set @@global.tidb_ddl_distribute_reorg = on") allow = variable.DDLEnableDistributeReorg.Load() require.Equal(t, true, allow) usage, err = telemetry.GetFeatureUsage(tk.Session()) require.NoError(t, err) - require.Equal(t, int64(0), usage.DDLUsageCounter.DistReorgUsed) + require.Equal(t, initCount, usage.DDLUsageCounter.DistReorgUsed) tk.MustExec("alter table tele_t add index idx_new(b)") usage, err = telemetry.GetFeatureUsage(tk.Session()) require.NoError(t, err) - require.Equal(t, int64(1), usage.DDLUsageCounter.DistReorgUsed) + require.Equal(t, initCount+1, usage.DDLUsageCounter.DistReorgUsed) } func TestGlobalMemoryControl(t *testing.T) {