From 1e3ecf8c58602df50a8fc2a77ee86f33fd931896 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Fri, 3 Dec 2021 11:41:13 +0800 Subject: [PATCH] *: fix goroutine leak in ddl intergration test --- cmd/ddltest/ddl_serial_test.go | 15 +++++++++++++-- cmd/ddltest/main_test.go | 8 +++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/cmd/ddltest/ddl_serial_test.go b/cmd/ddltest/ddl_serial_test.go index a92ef55447d53..ad22b4c720e60 100644 --- a/cmd/ddltest/ddl_serial_test.go +++ b/cmd/ddltest/ddl_serial_test.go @@ -118,6 +118,11 @@ func createDDLSuite(t *testing.T) (s *ddlSuite) { require.NoError(t, err) ddl.RunWorker = false session.ResetStoreForWithTiKVTest(s.store) + s.dom.Close() + require.NoError(t, s.store.Close()) + + s.store, err = store.New(fmt.Sprintf("tikv://%s%s", *etcd, *tikvPath)) + require.NoError(t, err) s.s, err = session.CreateSession(s.store) require.NoError(t, err) s.dom, err = session.BootstrapSession(s.store) @@ -235,8 +240,14 @@ func (s *ddlSuite) stopServers() error { defer s.m.Unlock() for i := 0; i < len(s.procs); i++ { - if s.procs[i] != nil { - err := s.killServer(s.procs[i].Process) + if proc := s.procs[i]; proc != nil { + if proc.db != nil { + if err := proc.db.Close(); err != nil { + return err + } + } + + err := s.killServer(proc.Process) if err != nil { return errors.Trace(err) } diff --git a/cmd/ddltest/main_test.go b/cmd/ddltest/main_test.go index 60acefcf2eaff..3afc96f0eab62 100644 --- a/cmd/ddltest/main_test.go +++ b/cmd/ddltest/main_test.go @@ -32,5 +32,11 @@ func TestMain(m *testing.M) { fmt.Fprint(os.Stderr, err.Error()) os.Exit(1) } - goleak.VerifyTestMain(m) + opts := []goleak.Option{ + goleak.IgnoreTopFunction("go.etcd.io/etcd/pkg/logutil.(*MergeLogger).outputLoop"), + goleak.IgnoreTopFunction("go.opencensus.io/stats/view.(*worker).start"), + goleak.IgnoreTopFunction("internal/poll.runtime_pollWait"), + goleak.IgnoreTopFunction("net/http.(*persistConn).writeLoop"), + } + goleak.VerifyTestMain(m, opts...) }