pingcap / tidb

TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://www.pingcap.com/tidb-serverless/
https://pingcap.com
Apache License 2.0
36.89k stars 5.81k forks source link

DATA RACE in `GetInternalSessionStartTSList` #54395

Closed lcwangchao closed 2 months ago

lcwangchao commented 2 months ago

https://do.pingcap.net/jenkins/blue/organizations/jenkins/pingcap%2Ftidb%2Fghpr_check2/detail/ghpr_check2/12327/pipeline/

WARNING: DATA RACE

Read at 0x00c03cf8c008 by goroutine 303:

  github.com/pingcap/tidb/pkg/session.(*LazyTxn).Valid()

      pkg/session/txn.go:227 +0x39

  github.com/pingcap/tidb/pkg/testkit.(*MockSessionManager).GetInternalSessionStartTSList()

      pkg/testkit/mocksessionmanager.go:164 +0x2e2

  github.com/pingcap/tidb/pkg/domain/infosync.(*InfoSyncer).ReportMinStartTS()

      pkg/domain/infosync/info.go:756 +0xb9

  github.com/pingcap/tidb/pkg/domain.(*Domain).infoSyncerKeeper()

      pkg/domain/domain.go:743 +0x53a

  github.com/pingcap/tidb/pkg/domain.(*Domain).infoSyncerKeeper-fm()

      <autogenerated>:1 +0x33

  github.com/pingcap/tidb/pkg/util.(*WaitGroupEnhancedWrapper).Run.func1()

      pkg/util/wait_group_wrapper.go:99 +0xf4

Previous write at 0x00c03cf8c008 by goroutine 1274:

  github.com/pingcap/tidb/pkg/session.(*LazyTxn).changeToInvalid()

      pkg/session/txn.go:341 +0x17a

  github.com/pingcap/tidb/pkg/session.(*session).doCommitWithRetry.func1()

      pkg/session/session.go:779 +0x84

  runtime.deferreturn()

      GOROOT/src/runtime/panic.go:477 +0x30

  github.com/pingcap/tidb/pkg/session.(*session).CommitTxn()

      pkg/session/session.go:928 +0x1be

  github.com/pingcap/tidb/pkg/session.autoCommitAfterStmt()

      pkg/session/tidb.go:281 +0x435

  github.com/pingcap/tidb/pkg/session.finishStmt()

      pkg/session/tidb.go:243 +0x273

  github.com/pingcap/tidb/pkg/session.(*execStmtResult).Finish.func1()

      pkg/session/session.go:2370 +0x149

  sync.(*Once).doSlow()

      GOROOT/src/sync/once.go:74 +0xf0

  sync.(*Once).Do()

      GOROOT/src/sync/once.go:65 +0x44

  github.com/pingcap/tidb/pkg/session.(*execStmtResult).Finish()

      pkg/session/session.go:2365 +0x9d

  github.com/pingcap/tidb/pkg/session.(*execStmtResult).Close()

      pkg/session/session.go:2384 +0x77

  github.com/pingcap/tidb/pkg/util/sqlexec.RecordSet.Close-fm()

      <autogenerated>:1 +0x42

  github.com/pingcap/tidb/pkg/parser/terror.Call()

      pkg/parser/terror/terror.go:315 +0x51

  github.com/pingcap/tidb/pkg/util/sqlexec.ExecSQL.func1()

      pkg/util/sqlexec/restricted_sql_executor.go:257 +0x33

  runtime.deferreturn()

      GOROOT/src/runtime/panic.go:477 +0x30

  github.com/pingcap/tidb/pkg/disttask/framework/storage.(*TaskManager).ExecuteSQLWithNewSession.func1()

      pkg/disttask/framework/storage/task_table.go:183 +0xf8

  github.com/pingcap/tidb/pkg/disttask/framework/storage.(*TaskManager).WithNewSession()

      pkg/disttask/framework/storage/task_table.go:147 +0x1a1

  github.com/pingcap/tidb/pkg/disttask/framework/storage.(*TaskManager).ExecuteSQLWithNewSession()

      pkg/disttask/framework/storage/task_table.go:182 +0x184

  github.com/pingcap/tidb/pkg/disttask/framework/storage.(*TaskManager).GetTaskExecInfoByExecID()

      pkg/disttask/framework/storage/task_table.go:270 +0x259

  github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor.(*Manager).handleTasks()

      pkg/disttask/framework/taskexecutor/manager.go:193 +0xd5

  github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor.(*Manager).handleTasksLoop()

      pkg/disttask/framework/taskexecutor/manager.go:184 +0x2c4

  github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor.(*Manager).handleTasksLoop-fm()

      <autogenerated>:1 +0x33

  github.com/pingcap/tidb/pkg/util.(*WaitGroupWrapper).Run.func1()

      pkg/util/wait_group_wrapper.go:157 +0x9d

Goroutine 303 (running) created at:

  github.com/pingcap/tidb/pkg/util.(*WaitGroupEnhancedWrapper).Run()

      pkg/util/wait_group_wrapper.go:94 +0x164

  github.com/pingcap/tidb/pkg/domain.(*Domain).Init()

      pkg/domain/domain.go:1315 +0x1c05

  github.com/pingcap/tidb/pkg/session.(*domainMap).Get.func1()

      pkg/session/tidb.go:92 +0x4c6

  github.com/pingcap/tidb/pkg/util.RunWithRetry()

      pkg/util/misc.go:70 +0xb1

  github.com/pingcap/tidb/pkg/session.(*domainMap).Get()

      pkg/session/tidb.go:79 +0x319

  github.com/pingcap/tidb/pkg/session.createSessionWithOpt()

      pkg/session/session.go:3696 +0x84

  github.com/pingcap/tidb/pkg/session.createSession()

      pkg/session/session.go:3688 +0x46

  github.com/pingcap/tidb/pkg/session.createSessionsImpl()

      pkg/session/session.go:3673 +0xa4

  github.com/pingcap/tidb/pkg/session.createSessions()

      pkg/session/session.go:3660 +0x56

  github.com/pingcap/tidb/pkg/session.bootstrapSessionImpl()

      pkg/session/session.go:3444 +0x5d6

  github.com/pingcap/tidb/pkg/session.BootstrapSession()

      pkg/session/session.go:3376 +0x4b

  github.com/pingcap/tidb/tests/realtikvtest.CreateMockStoreAndDomainAndSetup()

      tests/realtikvtest/testkit.go:124 +0x1d9

  github.com/pingcap/tidb/tests/realtikvtest.CreateMockStoreAndSetup()

      tests/realtikvtest/testkit.go:99 +0x253

  tests/realtikvtest/importintotest/importintotest_test.(*mockGCSSuite).SetupSuite()

      tests/realtikvtest/importintotest/util_test.go:65 +0x227

  github.com/stretchr/testify/suite.Run()

      external/com_github_stretchr_testify/suite/suite.go:157 +0x63e

  tests/realtikvtest/importintotest/importintotest_test.TestImportInto()

      tests/realtikvtest/importintotest/util_test.go:50 +0x90

  testing.tRunner()

      GOROOT/src/testing/testing.go:1595 +0x261

  testing.(*T).Run.func1()

      GOROOT/src/testing/testing.go:1648 +0x44

Goroutine 1274 (running) created at:

  github.com/pingcap/tidb/pkg/util.(*WaitGroupWrapper).Run()

      pkg/util/wait_group_wrapper.go:155 +0xf0

  github.com/pingcap/tidb/pkg/disttask/framework/taskexecutor.(*Manager).Start()

      pkg/disttask/framework/taskexecutor/manager.go:147 +0xe8

  github.com/pingcap/tidb/pkg/domain.(*Domain).distTaskFrameworkLoop()

      pkg/domain/domain.go:1543 +0x87

  github.com/pingcap/tidb/pkg/domain.(*Domain).InitDistTaskLoop.func1()

      pkg/domain/domain.go:1537 +0xeb

  github.com/pingcap/tidb/pkg/util.(*WaitGroupEnhancedWrapper).Run.func1()

      pkg/util/wait_group_wrapper.go:99 +0xf4

==================

-- Test timed out at 2024-07-02 15:07:07 UTC --
hawkingrei commented 2 months ago

The root cause is the same as #54374