Skip to content

p-dml: race risk when concurrent accessing txn options #52028

@you06

Description

@you06

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

Run go test ./tests/realtikvtest/pipelineddmltest --tags=intest -race

2. What did you expect to see? (Required)

test pass

3. What did you see instead (Required)

race detected

WARNING: DATA RACE
Read at 0x00c0314bd978 by goroutine 78928:
  github.com/tikv/client-go/v2/txnkv/transaction.(*twoPhaseCommitter).buildPipelinedFlushRequest()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/pipelined_flush.go:108 +0x7f4
  github.com/tikv/client-go/v2/txnkv/transaction.actionPipelinedFlush.handleSingleBatch()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/pipelined_flush.go:124 +0x1fc
  github.com/tikv/client-go/v2/txnkv/transaction.(*actionPipelinedFlush).handleSingleBatch()
      <autogenerated>:1 +0x9c
  github.com/tikv/client-go/v2/txnkv/transaction.(*twoPhaseCommitter).doActionOnBatches()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/2pc.go:1095 +0x66c
  github.com/tikv/client-go/v2/txnkv/transaction.(*twoPhaseCommitter).doActionOnGroupMutations()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/2pc.go:1056 +0x163c
  github.com/tikv/client-go/v2/txnkv/transaction.(*twoPhaseCommitter).doActionOnMutations()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/2pc.go:815 +0xf8
  github.com/tikv/client-go/v2/txnkv/transaction.(*twoPhaseCommitter).pipelinedFlushMutations()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/pipelined_flush.go:281 +0x25c
  github.com/tikv/client-go/v2/txnkv/transaction.(*KVTxn).InitPipelinedMemDB.func2()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/txn.go:555 +0x1350
  github.com/tikv/client-go/v2/internal/unionstore.(*PipelinedMemDB).Flush.func1()
      github.com/tikv/client-go/[email protected]/internal/unionstore/pipelined_memdb.go:314 +0x19c
  github.com/tikv/client-go/v2/internal/unionstore.(*PipelinedMemDB).Flush.gowrap1()
      github.com/tikv/client-go/[email protected]/internal/unionstore/pipelined_memdb.go:320 +0x44

Previous write at 0x00c0314bd978 by goroutine 58977:
  github.com/tikv/client-go/v2/txnkv/transaction.(*KVTxn).SetResourceGroupTagger()
      github.com/tikv/client-go/[email protected]/txnkv/transaction/txn.go:316 +0xcc
  github.com/pingcap/tidb/pkg/store/driver/txn.(*tikvTxn).SetOption()
      github.com/pingcap/tidb/pkg/store/driver/txn/txn_driver.go:254 +0xa4c
  github.com/pingcap/tidb/pkg/session.(*session).doCommit()
      github.com/pingcap/tidb/pkg/session/session.go:581 +0xb18
  github.com/pingcap/tidb/pkg/session.(*session).doCommitWithRetry()
      github.com/pingcap/tidb/pkg/session/session.go:882 +0x294
  github.com/pingcap/tidb/pkg/session.(*session).CommitTxn()
      github.com/pingcap/tidb/pkg/session/session.go:1009 +0x128
  github.com/pingcap/tidb/pkg/session.autoCommitAfterStmt()
      github.com/pingcap/tidb/pkg/session/tidb.go:281 +0x354
  github.com/pingcap/tidb/pkg/session.finishStmt()
      github.com/pingcap/tidb/pkg/session/tidb.go:243 +0x300
  github.com/pingcap/tidb/pkg/session.runStmt()
      github.com/pingcap/tidb/pkg/session/session.go:2394 +0x67c
  github.com/pingcap/tidb/pkg/session.(*session).ExecuteStmt()
      github.com/pingcap/tidb/pkg/session/session.go:2245 +0x12cc
  github.com/pingcap/tidb/pkg/testkit.(*TestKit).ExecWithContext()
      github.com/pingcap/tidb/pkg/testkit/testkit.go:365 +0xadc
  github.com/pingcap/tidb/pkg/testkit.(*TestKit).MustExecWithContext()
      github.com/pingcap/tidb/pkg/testkit/testkit.go:137 +0x64
  github.com/pingcap/tidb/pkg/testkit.(*TestKit).MustExec()
      github.com/pingcap/tidb/pkg/testkit/testkit.go:132 +0xd8
  github.com/pingcap/tidb/tests/realtikvtest/pipelineddmltest.TestPipelinedDMLInsert()

4. What is your TiDB version? (Required)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions