DATA RACE in the Memdb when to use UnionExec
- Dominant language
- Go
- Stars
- 40.5k
- Forks
- 6.2k
- PR merge metrics
- PR metrics pending
Description
## Bug Report
Please answer these questions before submitting your issue. Thanks!
### 1. Minimal reproduce step (Required)
```
WARNING: DATA RACE
Read at 0x00c06c21b010 by goroutine 296426:
github.com/tikv/client-go/v2/internal/unionstore.memdbNodeAddr.getRight()
external/com_github_tikv_client_go_v2/internal/unionstore/memdb.go:811 +0x249
github.com/tikv/client-go/v2/internal/unionstore.(*MemDB).traverse()
external/com_github_tikv_client_go_v2/internal/unionstore/memdb.go:400 +0x227
github.com/tikv/client-go/v2/internal/unionstore.(*MemDB).Get()
external/com_github_tikv_client_go_v2/internal/unionstore/memdb.go:209 +0xa4
github.com/pingcap/tidb/store/driver/txn.(*memBuffer).Get()
store/driver/txn/unionstore_driver.go:60 +0x74
github.com/pingcap/tidb/executor.(*PointGetExecutor).get()
executor/point_get.go:474 +0x186
github.com/pingcap/tidb/executor.(*PointGetExecutor).getAndLock()
executor/point_get.go:369 +0x185
github.com/pingcap/tidb/executor.(*PointGetExecutor).Next()
executor/point_get.go:321 +0x118c
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x632
github.com/pingcap/tidb/executor.(*SelectLockExec).Next()
executor/executor.go:1191 +0x104
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x632
github.com/pingcap/tidb/executor.(*UnionExec).resultPuller()
executor/executor.go:1888 +0xa2b
github.com/pingcap/tidb/executor.(*UnionExec).initialize.func1()
executor/executor.go:1841 +0x64
Previous write at 0x00c06c21b010 by goroutine 296427:
github.com/tikv/client-go/v2/internal/unionstore.(*MemDB).traverse()
external/com_github_tikv_client_go_v2/internal/unionstore/memdb.go:425 +0x678
github.com/tikv/client-go/v2/internal/unionstore.(*MemDB).set()
external/com_github_tikv_client_go_v2/internal/unionstore/memdb.go:335 +0x1ae
github.com/tikv/client-go/v2/internal/unionstore.(*MemDB).UpdateFlags()
external/com_github_tikv_client_go_v2/internal/unionstore/memdb.go:250 +0x21ba
github.com/tikv/client-go/v2/txnkv/transaction.(*KVTxn).lockKeys()
external/com_github_tikv_client_go_v2/txnkv/transaction/txn.go:1136 +0x2125
github.com/tikv/client-go/v2/txnkv/transaction.(*KVTxn).LockKeysFunc()
external/com_github_tikv_client_go_v2/txnkv/transaction/txn.go:844 +0x13d
github.com/pingcap/tidb/store/driver/txn.(*tikvTxn).LockKeysFunc()
store/driver/txn/txn_driver.go:81 +0xd2
github.com/pingcap/tidb/session.(*LazyTxn).LockKeysFunc()
session/txn.go:456 +0x3cc
github.com/pingcap/tidb/session.(*LazyTxn).LockKeys()
session/txn.go:431 +0x9a
github.com/pingcap/tidb/executor.doLockKeys()
executor/executor.go:1310 +0x359
github.com/pingcap/tidb/executor.(*SelectLockExec).Next()
executor/executor.go:1242 +0x64e
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x632
github.com/pingcap/tidb/executor.(*UnionExec).resultPuller()
executor/executor.go:1888 +0xa2b
github.com/pingcap/tidb/executor.(*UnionExec).initialize.func1()
executor/executor.go:1841 +0x64
Goroutine 296426 (running) created at:
github.com/pingcap/tidb/executor.(*UnionExec).initialize()
executor/executor.go:1841 +0x52f
github.com/pingcap/tidb/executor.(*UnionExec).Next()
executor/executor.go:1914 +0xf1
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x632
github.com/pingcap/tidb/executor.(*HashAggExec).fetchChildData()
executor/aggregate.go:817 +0x3f3
github.com/pingcap/tidb/executor.(*HashAggExec).prepare4ParallelExec.func3()
executor/aggregate.go:854 +0x64
Goroutine 296427 (running) created at:
github.com/pingcap/tidb/executor.(*UnionExec).initialize()
executor/executor.go:1841 +0x52f
github.com/pingcap/tidb/executor.(*UnionExec).Next()
executor/executor.go:1914 +0xf1
github.com/pingcap/tidb/executor.Next()
executor/executor.go:328 +0x632
github.com/pingcap/tidb/executor.(*HashAggExec).fetchChildData()
executor/aggregate.go:817 +0x3f3
github.com/pingcap/tidb/executor.(*HashAggExec).prepare4ParallelExec.func3()
executor/aggregate.go:854 +0x64
```
https://do.pingcap.net/jenkins/blue/organizations/jenkins/pingcap%2Ftidb%2Fghpr_unit_test/detail/ghpr_unit_test/12747/pipeline
### 2. What did you expect to see? (Required)
### 3. What did you see instead (Required)
### 4. What is your TiDB version? (Required)
Contributor guide
Assessment
This issue has not been assessed yet.