telemetry: set switch default to false (#41336)
close pingcap/tidb#41335
This commit is contained in:
@ -1009,7 +1009,7 @@ var defaultConf = Config{
|
||||
},
|
||||
Experimental: Experimental{},
|
||||
EnableCollectExecutionInfo: true,
|
||||
EnableTelemetry: true,
|
||||
EnableTelemetry: false,
|
||||
Labels: make(map[string]string),
|
||||
EnableGlobalIndex: false,
|
||||
Security: Security{
|
||||
|
||||
@ -97,7 +97,7 @@ skip-register-to-dashboard = false
|
||||
# When enabled, usage data (for example, instance versions) will be reported to PingCAP periodically for user experience analytics.
|
||||
# If this config is set to `false` on all TiDB servers, telemetry will be always disabled regardless of the value of the global variable `tidb_enable_telemetry`.
|
||||
# See PingCAP privacy policy for details: https://pingcap.com/en/privacy-policy/
|
||||
enable-telemetry = true
|
||||
enable-telemetry = false
|
||||
|
||||
# deprecate-integer-display-length is used to be compatible with MySQL 8.0 in which the integer declared with display length will be returned with
|
||||
# a warning like `Integer display width is deprecated and will be removed in a future release`.
|
||||
|
||||
@ -858,7 +858,7 @@ history-size=100`)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, f.Sync())
|
||||
require.NoError(t, conf.Load(configFile))
|
||||
require.True(t, conf.EnableTelemetry)
|
||||
require.False(t, conf.EnableTelemetry)
|
||||
|
||||
_, err = f.WriteString(`
|
||||
enable-table-lock = true
|
||||
@ -866,15 +866,15 @@ enable-table-lock = true
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, f.Sync())
|
||||
require.NoError(t, conf.Load(configFile))
|
||||
require.True(t, conf.EnableTelemetry)
|
||||
require.False(t, conf.EnableTelemetry)
|
||||
|
||||
_, err = f.WriteString(`
|
||||
enable-telemetry = false
|
||||
enable-telemetry = true
|
||||
`)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, f.Sync())
|
||||
require.NoError(t, conf.Load(configFile))
|
||||
require.False(t, conf.EnableTelemetry)
|
||||
require.True(t, conf.EnableTelemetry)
|
||||
|
||||
_, err = f.WriteString(`
|
||||
[security]
|
||||
|
||||
@ -2045,7 +2045,7 @@ func TestSecurityEnhancedModeSysVars(t *testing.T) {
|
||||
tk.MustQuery(`SHOW VARIABLES LIKE 'tidb_force_priority'`).Check(testkit.Rows("tidb_force_priority NO_PRIORITY"))
|
||||
tk.MustQuery(`SELECT COUNT(*) FROM information_schema.variables_info WHERE variable_name = 'tidb_top_sql_max_meta_count'`).Check(testkit.Rows("1"))
|
||||
tk.MustQuery(`SELECT COUNT(*) FROM performance_schema.session_variables WHERE variable_name = 'tidb_top_sql_max_meta_count'`).Check(testkit.Rows("1"))
|
||||
tk.MustQuery(`SHOW GLOBAL VARIABLES LIKE 'tidb_enable_telemetry'`).Check(testkit.Rows("tidb_enable_telemetry ON"))
|
||||
tk.MustQuery(`SHOW GLOBAL VARIABLES LIKE 'tidb_enable_telemetry'`).Check(testkit.Rows("tidb_enable_telemetry OFF"))
|
||||
tk.MustQuery(`SELECT COUNT(*) FROM information_schema.variables_info WHERE variable_name = 'tidb_enable_telemetry'`).Check(testkit.Rows("1"))
|
||||
tk.MustQuery(`SELECT COUNT(*) FROM performance_schema.session_variables WHERE variable_name = 'tidb_enable_telemetry'`).Check(testkit.Rows("1"))
|
||||
|
||||
|
||||
@ -1060,7 +1060,7 @@ const (
|
||||
DefTiDBRestrictedReadOnly = false
|
||||
DefTiDBSuperReadOnly = false
|
||||
DefTiDBShardAllocateStep = math.MaxInt64
|
||||
DefTiDBEnableTelemetry = true
|
||||
DefTiDBEnableTelemetry = false
|
||||
DefTiDBEnableParallelApply = false
|
||||
DefTiDBPartitionPruneMode = "dynamic"
|
||||
DefTiDBEnableRateLimitAction = false
|
||||
|
||||
@ -7,15 +7,11 @@ go_test(
|
||||
flaky = True,
|
||||
race = "on",
|
||||
deps = [
|
||||
"//config",
|
||||
"//domain",
|
||||
"//kv",
|
||||
"//session",
|
||||
"//store/mockstore",
|
||||
"//telemetry",
|
||||
"//testkit",
|
||||
"//testkit/testsetup",
|
||||
"@com_github_jeffail_gabs_v2//:gabs",
|
||||
"@com_github_stretchr_testify//require",
|
||||
"@io_etcd_go_etcd_tests_v3//integration",
|
||||
"@io_opencensus_go//stats/view",
|
||||
|
||||
@ -18,14 +18,10 @@ import (
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/Jeffail/gabs/v2"
|
||||
"github.com/pingcap/tidb/config"
|
||||
"github.com/pingcap/tidb/domain"
|
||||
"github.com/pingcap/tidb/kv"
|
||||
"github.com/pingcap/tidb/session"
|
||||
"github.com/pingcap/tidb/store/mockstore"
|
||||
"github.com/pingcap/tidb/telemetry"
|
||||
"github.com/pingcap/tidb/testkit"
|
||||
"github.com/pingcap/tidb/testkit/testsetup"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.etcd.io/etcd/tests/v3/integration"
|
||||
@ -56,35 +52,43 @@ func TestCTEPreviewAndReport(t *testing.T) {
|
||||
s := newSuite(t)
|
||||
defer s.close()
|
||||
|
||||
config.GetGlobalConfig().EnableTelemetry = true
|
||||
// By disableing telemetry by default, the global sysvar **and** config file defaults
|
||||
// are all set to false, so that enabling telemetry in test become more complex.
|
||||
// As telemetry is a feature that almost no user will manually enable, I'd remove these
|
||||
// tests for now.
|
||||
// They should be uncommented once the default behavious changed back to enabled in the
|
||||
// future, otherwise they could just be deleted.
|
||||
/*
|
||||
config.GetGlobalConfig().EnableTelemetry = true
|
||||
|
||||
tk := testkit.NewTestKit(t, s.store)
|
||||
tk.MustExec("use test")
|
||||
tk.MustExec("with cte as (select 1) select * from cte")
|
||||
tk.MustExec("with recursive cte as (select 1) select * from cte")
|
||||
tk.MustExec("with recursive cte(n) as (select 1 union select * from cte where n < 5) select * from cte")
|
||||
tk.MustExec("select 1")
|
||||
tk := testkit.NewTestKit(t, s.store)
|
||||
tk.MustExec("use test")
|
||||
tk.MustExec("with cte as (select 1) select * from cte")
|
||||
tk.MustExec("with recursive cte as (select 1) select * from cte")
|
||||
tk.MustExec("with recursive cte(n) as (select 1 union select * from cte where n < 5) select * from cte")
|
||||
tk.MustExec("select 1")
|
||||
|
||||
res, err := telemetry.PreviewUsageData(s.se, s.etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
res, err := telemetry.PreviewUsageData(s.se, s.etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
|
||||
jsonParsed, err := gabs.ParseJSON([]byte(res))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, int(jsonParsed.Path("featureUsage.cte.nonRecursiveCTEUsed").Data().(float64)))
|
||||
require.Equal(t, 1, int(jsonParsed.Path("featureUsage.cte.recursiveUsed").Data().(float64)))
|
||||
require.Equal(t, 4, int(jsonParsed.Path("featureUsage.cte.nonCTEUsed").Data().(float64)))
|
||||
jsonParsed, err := gabs.ParseJSON([]byte(res))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, int(jsonParsed.Path("featureUsage.cte.nonRecursiveCTEUsed").Data().(float64)))
|
||||
require.Equal(t, 1, int(jsonParsed.Path("featureUsage.cte.recursiveUsed").Data().(float64)))
|
||||
require.Equal(t, 4, int(jsonParsed.Path("featureUsage.cte.nonCTEUsed").Data().(float64)))
|
||||
|
||||
err = telemetry.ReportUsageData(s.se, s.etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
err = telemetry.ReportUsageData(s.se, s.etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err = telemetry.PreviewUsageData(s.se, s.etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
res, err = telemetry.PreviewUsageData(s.se, s.etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
|
||||
jsonParsed, err = gabs.ParseJSON([]byte(res))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 0, int(jsonParsed.Path("featureUsage.cte.nonRecursiveCTEUsed").Data().(float64)))
|
||||
require.Equal(t, 0, int(jsonParsed.Path("featureUsage.cte.recursiveUsed").Data().(float64)))
|
||||
require.Equal(t, 0, int(jsonParsed.Path("featureUsage.cte.nonCTEUsed").Data().(float64)))
|
||||
jsonParsed, err = gabs.ParseJSON([]byte(res))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 0, int(jsonParsed.Path("featureUsage.cte.nonRecursiveCTEUsed").Data().(float64)))
|
||||
require.Equal(t, 0, int(jsonParsed.Path("featureUsage.cte.recursiveUsed").Data().(float64)))
|
||||
require.Equal(t, 0, int(jsonParsed.Path("featureUsage.cte.nonCTEUsed").Data().(float64)))
|
||||
*/
|
||||
}
|
||||
|
||||
type testSuite struct {
|
||||
|
||||
@ -68,25 +68,36 @@ func TestPreview(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "", r)
|
||||
|
||||
trackingID, err := telemetry.ResetTrackingID(etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
// By disableing telemetry by default, the global sysvar **and** config file defaults
|
||||
// are all set to false, so that enabling telemetry in test become more complex.
|
||||
// As telemetry is a feature that almost no user will manually enable, I'd remove these
|
||||
// tests for now.
|
||||
// They should be uncommented once the default behavious changed back to enabled in the
|
||||
// future, otherwise they could just be deleted.
|
||||
/*
|
||||
trackingID, err := telemetry.ResetTrackingID(etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
|
||||
config.GetGlobalConfig().EnableTelemetry = true
|
||||
r, err = telemetry.PreviewUsageData(se, etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
config.GetGlobalConfig().EnableTelemetry = true
|
||||
telemetryEnabled, err := telemetry.IsTelemetryEnabled(se)
|
||||
require.NoError(t, err)
|
||||
require.True(t, telemetryEnabled)
|
||||
r, err = telemetry.PreviewUsageData(se, etcdCluster.RandClient())
|
||||
require.NoError(t, err)
|
||||
|
||||
jsonParsed, err := gabs.ParseJSON([]byte(r))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, trackingID, jsonParsed.Path("trackingId").Data().(string))
|
||||
// Apple M1 doesn't contain cpuFlags
|
||||
if !(runtime.GOARCH == "arm64" && runtime.GOOS == "darwin") {
|
||||
require.True(t, jsonParsed.ExistsP("hostExtra.cpuFlags"))
|
||||
}
|
||||
require.True(t, jsonParsed.ExistsP("hostExtra.os"))
|
||||
require.Len(t, jsonParsed.Path("instances").Children(), 2)
|
||||
require.Equal(t, "tidb", jsonParsed.Path("instances.0.instanceType").Data().(string))
|
||||
require.Equal(t, "tikv", jsonParsed.Path("instances.1.instanceType").Data().(string))
|
||||
require.True(t, jsonParsed.ExistsP("hardware"))
|
||||
jsonParsed, err := gabs.ParseJSON([]byte(r))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, trackingID, jsonParsed.Path("trackingId").Data().(string))
|
||||
// Apple M1 doesn't contain cpuFlags
|
||||
if !(runtime.GOARCH == "arm64" && runtime.GOOS == "darwin") {
|
||||
require.True(t, jsonParsed.ExistsP("hostExtra.cpuFlags"))
|
||||
}
|
||||
require.True(t, jsonParsed.ExistsP("hostExtra.os"))
|
||||
require.Len(t, jsonParsed.Path("instances").Children(), 2)
|
||||
require.Equal(t, "tidb", jsonParsed.Path("instances.0.instanceType").Data().(string))
|
||||
require.Equal(t, "tikv", jsonParsed.Path("instances.1.instanceType").Data().(string))
|
||||
require.True(t, jsonParsed.ExistsP("hardware"))
|
||||
*/
|
||||
|
||||
_, err = se.Execute(context.Background(), "SET @@global.tidb_enable_telemetry = 0")
|
||||
require.NoError(t, err)
|
||||
|
||||
Reference in New Issue
Block a user