diff --git a/br/pkg/mock/mock_cluster.go b/br/pkg/mock/mock_cluster.go index e0d81e562f8cb..4135abaa19ad0 100644 --- a/br/pkg/mock/mock_cluster.go +++ b/br/pkg/mock/mock_cluster.go @@ -103,7 +103,7 @@ func (mock *Cluster) Start() error { } mock.Server = svr go func() { - if err1 := svr.Run(); err1 != nil { + if err1 := svr.Run(nil); err1 != nil { panic(err1) } }() diff --git a/cmd/tidb-server/main.go b/cmd/tidb-server/main.go index f7d52abaf5b3e..fcadd42eba393 100644 --- a/cmd/tidb-server/main.go +++ b/cmd/tidb-server/main.go @@ -317,10 +317,8 @@ func main() { close(exited) }) topsql.SetupTopSQL() - if config.GetGlobalConfig().Performance.ForceInitStats { - <-dom.StatsHandle().InitStatsDone - } - terror.MustNil(svr.Run()) + + terror.MustNil(svr.Run(dom)) <-exited syncLog() } diff --git a/pkg/server/handler/extractorhandler/extract_test.go b/pkg/server/handler/extractorhandler/extract_test.go index ac8cffcecac9f..2ba74a48843d4 100644 --- a/pkg/server/handler/extractorhandler/extract_test.go +++ b/pkg/server/handler/extractorhandler/extract_test.go @@ -63,7 +63,7 @@ func TestExtractHandler(t *testing.T) { client.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) client.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() client.WaitUntilServerOnline() diff --git a/pkg/server/handler/optimizor/optimize_trace_test.go b/pkg/server/handler/optimizor/optimize_trace_test.go index 41af62ba6d1ba..6aac71902bf2d 100644 --- a/pkg/server/handler/optimizor/optimize_trace_test.go +++ b/pkg/server/handler/optimizor/optimize_trace_test.go @@ -52,7 +52,7 @@ func TestDumpOptimizeTraceAPI(t *testing.T) { client.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) client.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() client.WaitUntilServerOnline() diff --git a/pkg/server/handler/optimizor/plan_replayer_test.go b/pkg/server/handler/optimizor/plan_replayer_test.go index bd2979c12a255..3547bf80b7db7 100644 --- a/pkg/server/handler/optimizor/plan_replayer_test.go +++ b/pkg/server/handler/optimizor/plan_replayer_test.go @@ -94,7 +94,7 @@ func prepareServerAndClientForTest(t *testing.T, store kv.Storage, dom *domain.D srv.SetDomain(dom) require.NoError(t, err) go func() { - err := srv.Run() + err := srv.Run(nil) require.NoError(t, err) }() diff --git a/pkg/server/handler/optimizor/statistics_handler_test.go b/pkg/server/handler/optimizor/statistics_handler_test.go index ff33ae491dc12..c2e2e936a8820 100644 --- a/pkg/server/handler/optimizor/statistics_handler_test.go +++ b/pkg/server/handler/optimizor/statistics_handler_test.go @@ -59,7 +59,7 @@ func TestDumpStatsAPI(t *testing.T) { client.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) client.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() client.WaitUntilServerOnline() diff --git a/pkg/server/handler/tests/http_handler_test.go b/pkg/server/handler/tests/http_handler_test.go index 45cfee11b2adf..bc2faa8dcbf29 100644 --- a/pkg/server/handler/tests/http_handler_test.go +++ b/pkg/server/handler/tests/http_handler_test.go @@ -469,7 +469,7 @@ func (ts *basicHTTPHandlerTestSuite) startServer(t *testing.T) { ts.server = server ts.server.SetDomain(ts.domain) go func() { - err := server.Run() + err := server.Run(ts.domain) require.NoError(t, err) }() ts.WaitUntilServerOnline() diff --git a/pkg/server/server.go b/pkg/server/server.go index 6158026281bd8..c7ca2dcf60384 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -420,7 +420,7 @@ func (s *Server) reportConfig() { } // Run runs the server. -func (s *Server) Run() error { +func (s *Server) Run(dom *domain.Domain) error { metrics.ServerEventCounter.WithLabelValues(metrics.ServerStart).Inc() s.reportConfig() @@ -428,6 +428,9 @@ func (s *Server) Run() error { if s.cfg.Status.ReportStatus { s.startStatusHTTP() } + if config.GetGlobalConfig().Performance.ForceInitStats && dom != nil { + <-dom.StatsHandle().InitStatsDone + } // If error should be reported and exit the server it can be sent on this // channel. Otherwise, end with sending a nil error to signal "done" errChan := make(chan error, 2) diff --git a/pkg/server/tests/commontest/tidb_test.go b/pkg/server/tests/commontest/tidb_test.go index 1dec5e7ce1e14..bb34da81e464b 100644 --- a/pkg/server/tests/commontest/tidb_test.go +++ b/pkg/server/tests/commontest/tidb_test.go @@ -170,7 +170,7 @@ func TestSocketForwarding(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -202,7 +202,7 @@ func TestSocket(t *testing.T) { require.NoError(t, err) server.SetDomain(ts.Domain) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -238,7 +238,7 @@ func TestSocketAndIp(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() cli.WaitUntilServerCanConnect() @@ -402,7 +402,7 @@ func TestOnlySocket(t *testing.T) { require.NoError(t, err) server.SetDomain(ts.Domain) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -904,7 +904,7 @@ func TestGracefulShutdown(t *testing.T) { cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) cli.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -2147,7 +2147,7 @@ func TestLocalhostClientMapping(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() defer server.Close() @@ -2888,7 +2888,7 @@ func TestProxyProtocolWithIpFallbackable(t *testing.T) { require.NoError(t, err) server.SetDomain(ts.Domain) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -2953,7 +2953,7 @@ func TestProxyProtocolWithIpNoFallbackable(t *testing.T) { require.NoError(t, err) server.SetDomain(ts.Domain) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 1000) diff --git a/pkg/server/tests/servertestkit/testkit.go b/pkg/server/tests/servertestkit/testkit.go index 461e2e646546b..9b880b0567235 100644 --- a/pkg/server/tests/servertestkit/testkit.go +++ b/pkg/server/tests/servertestkit/testkit.go @@ -78,7 +78,7 @@ func CreateTidbTestSuiteWithCfg(t *testing.T, cfg *config.Config) *TidbTestSuite ts.Server.SetDomain(ts.Domain) ts.Domain.InfoSyncer().SetSessionManager(ts.Server) go func() { - err := ts.Server.Run() + err := ts.Server.Run(nil) require.NoError(t, err) }() ts.WaitUntilServerOnline() diff --git a/pkg/server/tests/tls/tls_test.go b/pkg/server/tests/tls/tls_test.go index 131282c5278df..8cc24f8fa0592 100644 --- a/pkg/server/tests/tls/tls_test.go +++ b/pkg/server/tests/tls/tls_test.go @@ -216,7 +216,7 @@ func TestTLSVerify(t *testing.T) { defer server.Close() cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -308,7 +308,7 @@ func TestTLSBasic(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -384,7 +384,7 @@ func TestErrorNoRollback(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() defer server.Close() @@ -443,7 +443,7 @@ func TestReloadTLS(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -536,7 +536,7 @@ func TestStatusAPIWithTLS(t *testing.T) { cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) cli.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100) @@ -594,7 +594,7 @@ func TestStatusAPIWithTLSCNCheck(t *testing.T) { cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) cli.StatusPort = testutil.GetPortFromTCPAddr(server.StatusListenerAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() defer server.Close() @@ -652,7 +652,7 @@ func TestTLSAuto(t *testing.T) { server.SetDomain(ts.Domain) cli.Port = testutil.GetPortFromTCPAddr(server.ListenAddr()) go func() { - err := server.Run() + err := server.Run(nil) require.NoError(t, err) }() time.Sleep(time.Millisecond * 100)