Skip to content

Bug Report: TestSelectScatterPartialOLAP data race #18996

@rMaxiQp

Description

@rMaxiQp

Overview of the Issue

When I run make unit_test_race after source dev.env, I see a data race warning from TestSelectScatterPartialOLAP

Reproduction Steps

$ source dev.env
$ make unit_test_race

Binary Version

$ git log --oneline
562b8b6a02 (HEAD -> main, origin/main, origin/HEAD) planner: allow pushdown of window functions partitioned by unique vindex (#18903)
ea7f6b1195 Remove old GC table name format (#18981)
1f492101ab vdiff: do not sort by table name in summary, it is not necessary (#18972)

Operating System and Environment details

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

$ uname -sr
Linux 6.8.0-87-generic

$ uname -m
x86_64

Log Fragments

==================
WARNING: DATA RACE
Write at 0x00c000a58068 by goroutine 1668:
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*SafeSession).ResetTx()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/safe_session.go:170 +0x585
  vitess.io/vitess/go/vt/vtgate.(*TxConn).Rollback.deferwrap1()
      /home/zq2/vitess/go/vt/vtgate/tx_conn.go:415 +0x33
  runtime.deferreturn()
      /usr/local/go/src/runtime/panic.go:589 +0x5d
  vitess.io/vitess/go/vt/vtgate.(*ScatterConn).multiGoTransaction()
      /home/zq2/vitess/go/vt/vtgate/scatter_conn.go:745 +0x5ee
  vitess.io/vitess/go/vt/vtgate.(*ScatterConn).StreamExecuteMulti()
      /home/zq2/vitess/go/vt/vtgate/scatter_conn.go:405 +0x584
  vitess.io/vitess/go/vt/vtgate.(*Executor).StreamExecuteMulti()
      /home/zq2/vitess/go/vt/vtgate/executor.go:1661 +0x156
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*VCursorImpl).StreamExecuteMulti()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/vcursor_impl.go:886 +0x57c
  vitess.io/vitess/go/vt/vtgate/engine.(*shardRoute).StreamExecute()
      /home/zq2/vitess/go/vt/vtgate/engine/shard_route.go:42 +0x243
  vitess.io/vitess/go/vt/vtgate/engine.runOneStream.func1()
      /home/zq2/vitess/go/vt/vtgate/engine/merge_sort.go:232 +0x2a5

Previous read at 0x00c000a58068 by goroutine 1671:
  vitess.io/vitess/go/vt/vtgate.(*TxConn).Rollback()
      /home/zq2/vitess/go/vt/vtgate/tx_conn.go:417 +0x108
  vitess.io/vitess/go/vt/vtgate.(*ScatterConn).multiGoTransaction()
      /home/zq2/vitess/go/vt/vtgate/scatter_conn.go:745 +0x5ee
  vitess.io/vitess/go/vt/vtgate.(*ScatterConn).StreamExecuteMulti()
      /home/zq2/vitess/go/vt/vtgate/scatter_conn.go:405 +0x584
  vitess.io/vitess/go/vt/vtgate.(*Executor).StreamExecuteMulti()
      /home/zq2/vitess/go/vt/vtgate/executor.go:1661 +0x156
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*VCursorImpl).StreamExecuteMulti()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/vcursor_impl.go:886 +0x57c
  vitess.io/vitess/go/vt/vtgate/engine.(*shardRoute).StreamExecute()
      /home/zq2/vitess/go/vt/vtgate/engine/shard_route.go:42 +0x243
  vitess.io/vitess/go/vt/vtgate/engine.runOneStream.func1()
      /home/zq2/vitess/go/vt/vtgate/engine/merge_sort.go:232 +0x2a5

Goroutine 1668 (running) created at:
  vitess.io/vitess/go/vt/vtgate/engine.runOneStream()
      /home/zq2/vitess/go/vt/vtgate/engine/merge_sort.go:228 +0x2cc
  vitess.io/vitess/go/vt/vtgate/engine.(*MergeSort).TryStreamExecute()
      /home/zq2/vitess/go/vt/vtgate/engine/merge_sort.go:78 +0x2e4
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*VCursorImpl).StreamExecutePrimitive()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/vcursor_impl.go:789 +0x2d8
  vitess.io/vitess/go/vt/vtgate/engine.(*Route).mergeSort()
      /home/zq2/vitess/go/vt/vtgate/engine/route.go:315 +0x536
  vitess.io/vitess/go/vt/vtgate/engine.(*Route).streamExecuteShards()
      /home/zq2/vitess/go/vt/vtgate/engine/route.go:277 +0x547
  vitess.io/vitess/go/vt/vtgate/engine.(*Route).TryStreamExecute()
      /home/zq2/vitess/go/vt/vtgate/engine/route.go:220 +0x21c
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*VCursorImpl).StreamExecutePrimitive()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/vcursor_impl.go:789 +0x2d8
  vitess.io/vitess/go/vt/vtgate.(*Executor).StreamExecute.func1()
      /home/zq2/vitess/go/vt/vtgate/executor.go:365 +0x519
  vitess.io/vitess/go/vt/vtgate.(*Executor).newExecute()
      /home/zq2/vitess/go/vt/vtgate/plan_execute.go:176 +0xbfd
  vitess.io/vitess/go/vt/vtgate.(*Executor).StreamExecute()
      /home/zq2/vitess/go/vt/vtgate/executor.go:402 +0x76e
  vitess.io/vitess/go/vt/vtgate.executorStream()
      /home/zq2/vitess/go/vt/vtgate/executor_framework_test.go:338 +0x24f
  vitess.io/vitess/go/vt/vtgate.TestSelectScatterPartialOLAP()
      /home/zq2/vitess/go/vt/vtgate/executor_select_test.go:1804 +0xf18
  vitess.io/vitess/go/vt/vtgate.TestSelectScatterPartialOLAP()
      /home/zq2/vitess/go/vt/vtgate/executor_select_test.go:1772 +0x6c4
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:1934 +0x21c
  testing.(*T).Run.gowrap1()
      /usr/local/go/src/testing/testing.go:1997 +0x44

Goroutine 1671 (running) created at:
  vitess.io/vitess/go/vt/vtgate/engine.runOneStream()
      /home/zq2/vitess/go/vt/vtgate/engine/merge_sort.go:228 +0x2cc
  vitess.io/vitess/go/vt/vtgate/engine.(*MergeSort).TryStreamExecute()
      /home/zq2/vitess/go/vt/vtgate/engine/merge_sort.go:78 +0x2e4
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*VCursorImpl).StreamExecutePrimitive()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/vcursor_impl.go:789 +0x2d8
  vitess.io/vitess/go/vt/vtgate/engine.(*Route).mergeSort()
      /home/zq2/vitess/go/vt/vtgate/engine/route.go:315 +0x536
  vitess.io/vitess/go/vt/vtgate/engine.(*Route).streamExecuteShards()
      /home/zq2/vitess/go/vt/vtgate/engine/route.go:277 +0x547
  vitess.io/vitess/go/vt/vtgate/engine.(*Route).TryStreamExecute()
      /home/zq2/vitess/go/vt/vtgate/engine/route.go:220 +0x21c
  vitess.io/vitess/go/vt/vtgate/executorcontext.(*VCursorImpl).StreamExecutePrimitive()
      /home/zq2/vitess/go/vt/vtgate/executorcontext/vcursor_impl.go:789 +0x2d8
  vitess.io/vitess/go/vt/vtgate.(*Executor).StreamExecute.func1()
      /home/zq2/vitess/go/vt/vtgate/executor.go:365 +0x519
  vitess.io/vitess/go/vt/vtgate.(*Executor).newExecute()
      /home/zq2/vitess/go/vt/vtgate/plan_execute.go:176 +0xbfd
  vitess.io/vitess/go/vt/vtgate.(*Executor).StreamExecute()
      /home/zq2/vitess/go/vt/vtgate/executor.go:402 +0x76e
  vitess.io/vitess/go/vt/vtgate.executorStream()
      /home/zq2/vitess/go/vt/vtgate/executor_framework_test.go:338 +0x24f
  vitess.io/vitess/go/vt/vtgate.TestSelectScatterPartialOLAP()
      /home/zq2/vitess/go/vt/vtgate/executor_select_test.go:1804 +0xf18
  vitess.io/vitess/go/vt/vtgate.TestSelectScatterPartialOLAP()
      /home/zq2/vitess/go/vt/vtgate/executor_select_test.go:1772 +0x6c4
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:1934 +0x21c
  testing.(*T).Run.gowrap1()
      /usr/local/go/src/testing/testing.go:1997 +0x44

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs TriageThis issue needs to be correctly labelled and triagedType: Bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions