go-ora icon indicating copy to clipboard operation
go-ora copied to clipboard

Upgrading v2.8.7 to v2.8.9 leads to golang race detector errors

Open bobvawter opened this issue 1 year ago • 13 comments

It looks like some recent changes have introduced a thread-safety problem when using a pooled cache of prepared statements created against a *sql.DB and then subsequently bound to a *sql.TX. When running our integration tests with go test -race, we see a number of data races identified in a high-concurrency test suite. There are also many instances of data integrity check failed errors when attempting to execute the prepared statements.

The general approach we take when executing a novel statement fingerprint is to call *sql.DB.PrepareContext() to create a *sql.Stmt. These statement objects are stored in an LRU cache. When we need to execute a statement, we call *sql.Tx.StmtContext() to bind the statement to the transaction and then execute the returned, bound *sql.Stmt.

For comparison, this same code base is used with pgx and the go-mysql drivers.

==================
WARNING: DATA RACE
Read at 0x00c0012ea218 by goroutine 588786:
  github.com/sijms/go-ora/v2/network.(*Session).writePacket()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:872 +0x70
  github.com/sijms/go-ora/v2/network.(*Session).BreakConnection()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:431 +0x264
  github.com/sijms/go-ora/v2/network.(*Session).StartContext.func1()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:192 +0x17e
  github.com/sijms/go-ora/v2/network.(*Session).StartContext.func2()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:203 +0x47

Previous write at 0x00c0012ea218 by goroutine 4145:
  github.com/sijms/go-ora/v2/network.(*Session).resetWrite()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:164 +0x1864
  github.com/sijms/go-ora/v2/network.(*Session).ResetBuffer()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:175 +0x184d
  github.com/sijms/go-ora/v2.(*Stmt)._exec()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1987 +0x17fc
  github.com/sijms/go-ora/v2.(*Stmt).ExecContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1282 +0x317
  database/sql.ctxDriverStmtExec()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/ctxutil.go:65 +0xf5
  database/sql.resultFromStatement()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2635 +0x1be
  database/sql.(*Stmt).ExecContext.func1()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2609 +0x10a
  database/sql.(*DB).retry()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:1538 +0x4c
  database/sql.(*Stmt).ExecContext()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2603 +0x19c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertBagsLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:496 +0x7ee
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:332 +0x30c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).Apply()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:230 +0x1069
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*Acceptor).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/acceptor.go:48 +0x1ea
  github.com/cockroachdb/cdc-sink/internal/types.(*orderedAdapter).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/types/acceptors.go:85 +0xb9
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepOnce()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:265 +0x159b
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:143 +0x5f0
  github.com/cockroachdb/cdc-sink/internal/util/stopvar.DoWhenChangedOrInterval[...]()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopvar/stopvar.go:71 +0x253
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:122 +0x1fc
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:97 +0x2d9
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4

Goroutine 588786 (running) created at:
  github.com/sijms/go-ora/v2/network.(*Session).StartContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:184 +0x2da
  github.com/sijms/go-ora/v2.(*Stmt).ExecContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1278 +0x199
  database/sql.ctxDriverStmtExec()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/ctxutil.go:65 +0xf5
  database/sql.resultFromStatement()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2635 +0x1be
  database/sql.(*Stmt).ExecContext.func1()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2609 +0x10a
  database/sql.(*DB).retry()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:1538 +0x4c
  database/sql.(*Stmt).ExecContext()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2603 +0x19c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertBagsLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:496 +0x7ee
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:332 +0x30c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).Apply()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:230 +0x1069
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*Acceptor).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/acceptor.go:48 +0x1ea
  github.com/cockroachdb/cdc-sink/internal/types.(*orderedAdapter).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/types/acceptors.go:85 +0xb9
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepOnce()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:265 +0x159b
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:143 +0x5f0
  github.com/cockroachdb/cdc-sink/internal/util/stopvar.DoWhenChangedOrInterval[...]()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopvar/stopvar.go:71 +0x253
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:122 +0x1fc
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:97 +0x2d9
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4

Goroutine 4145 (running) created at:
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:185 +0x144
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:91 +0xd7
  github.com/cockroachdb/cdc-sink/internal/sequencer/sequtil.LeaseGroup.func1.1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/sequtil/lease_group.go:56 +0xbc
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4
==================
==================
WARNING: DATA RACE
Read at 0x00c001119ca0 by goroutine 588786:
  runtime.growslice()
      /opt/hostedtoolcache/go/1.20.14/x64/src/runtime/slice.go:157 +0x0
  github.com/sijms/go-ora/v2/network.(*Session).writePacket()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:872 +0xa9
  github.com/sijms/go-ora/v2/network.(*Session).BreakConnection()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:431 +0x264
  github.com/sijms/go-ora/v2/network.(*Session).StartContext.func1()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:192 +0x17e
  github.com/sijms/go-ora/v2/network.(*Session).StartContext.func2()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:203 +0x47

Previous write at 0x00c001119ca0 by goroutine 4145:
  github.com/sijms/go-ora/v2/network.(*Session).writePacket()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:872 +0xdb
  github.com/sijms/go-ora/v2/network.(*Session).Write()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:649 +0x4cf
  github.com/sijms/go-ora/v2.(*Stmt).write()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:559 +0x824
  github.com/sijms/go-ora/v2.(*Stmt)._exec()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1988 +0x1984
  github.com/sijms/go-ora/v2.(*Stmt).ExecContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1282 +0x317
  database/sql.ctxDriverStmtExec()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/ctxutil.go:65 +0xf5
  database/sql.resultFromStatement()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2635 +0x1be
  database/sql.(*Stmt).ExecContext.func1()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2609 +0x10a
  database/sql.(*DB).retry()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:1538 +0x4c
  database/sql.(*Stmt).ExecContext()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2603 +0x19c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertBagsLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:496 +0x7ee
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:332 +0x30c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).Apply()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:230 +0x1069
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*Acceptor).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/acceptor.go:48 +0x1ea
  github.com/cockroachdb/cdc-sink/internal/types.(*orderedAdapter).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/types/acceptors.go:85 +0xb9
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepOnce()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:265 +0x159b
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:143 +0x5f0
  github.com/cockroachdb/cdc-sink/internal/util/stopvar.DoWhenChangedOrInterval[...]()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopvar/stopvar.go:71 +0x253
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:122 +0x1fc
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:97 +0x2d9
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4

Goroutine 588786 (running) created at:
  github.com/sijms/go-ora/v2/network.(*Session).StartContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:184 +0x2da
  github.com/sijms/go-ora/v2.(*Stmt).ExecContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1278 +0x199
  database/sql.ctxDriverStmtExec()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/ctxutil.go:65 +0xf5
  database/sql.resultFromStatement()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2635 +0x1be
  database/sql.(*Stmt).ExecContext.func1()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2609 +0x10a
  database/sql.(*DB).retry()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:1538 +0x4c
  database/sql.(*Stmt).ExecContext()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2603 +0x19c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertBagsLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:496 +0x7ee
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:332 +0x30c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).Apply()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:230 +0x1069
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*Acceptor).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/acceptor.go:48 +0x1ea
  github.com/cockroachdb/cdc-sink/internal/types.(*orderedAdapter).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/types/acceptors.go:85 +0xb9
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepOnce()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:265 +0x159b
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:143 +0x5f0
  github.com/cockroachdb/cdc-sink/internal/util/stopvar.DoWhenChangedOrInterval[...]()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopvar/stopvar.go:71 +0x253
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:122 +0x1fc
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:97 +0x2d9
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4

Goroutine 4145 (running) created at:
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:185 +0x144
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:91 +0xd7
  github.com/cockroachdb/cdc-sink/internal/sequencer/sequtil.LeaseGroup.func1.1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/sequtil/lease_group.go:56 +0xbc
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4
==================
==================
WARNING: DATA RACE
Read at 0x00c0012ea678 by goroutine 4146:
  github.com/sijms/go-ora/v2/network.(*Session).IsBreak()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:337 +0xcb
  github.com/sijms/go-ora/v2/network.(*Session).read()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:767 +0xdb
  github.com/sijms/go-ora/v2/network.(*Session).GetByte()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:1511 +0x75
  github.com/sijms/go-ora/v2.(*Connection).read()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/connection.go:357 +0x7d
  github.com/sijms/go-ora/v2.(*Stmt).ExecContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1284 +0x394
  database/sql.ctxDriverStmtExec()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/ctxutil.go:65 +0xf5
  database/sql.resultFromStatement()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2635 +0x1be
  database/sql.(*Stmt).ExecContext.func1()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2609 +0x10a
  database/sql.(*DB).retry()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:1538 +0x4c
  database/sql.(*Stmt).ExecContext()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2603 +0x19c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertBagsLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:496 +0x7ee
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:332 +0x30c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).Apply()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:230 +0x1069
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*Acceptor).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/acceptor.go:48 +0x1ea
  github.com/cockroachdb/cdc-sink/internal/types.(*orderedAdapter).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/types/acceptors.go:85 +0xb9
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepOnce()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:265 +0x159b
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:143 +0x5f0
  github.com/cockroachdb/cdc-sink/internal/util/stopvar.DoWhenChangedOrInterval[...]()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopvar/stopvar.go:71 +0x253
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:122 +0x1fc
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:97 +0x2d9
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4

Previous write at 0x00c0012ea678 by goroutine 588767:
  github.com/sijms/go-ora/v2/network.(*Session).BreakConnection()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:436 +0x284
  github.com/sijms/go-ora/v2/network.(*Session).StartContext.func1()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:192 +0x17e
  github.com/sijms/go-ora/v2/network.(*Session).StartContext.func2()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:203 +0x47

Goroutine 4146 (running) created at:
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:185 +0x144
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:91 +0xd7
  github.com/cockroachdb/cdc-sink/internal/sequencer/sequtil.LeaseGroup.func1.1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/sequtil/lease_group.go:56 +0xbc
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4

Goroutine 588767 (finished) created at:
  github.com/sijms/go-ora/v2/network.(*Session).StartContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/network/session.go:184 +0x2da
  github.com/sijms/go-ora/v2.(*Stmt).ExecContext()
      /home/runner/go/pkg/mod/github.com/sijms/go-ora/[email protected]/command.go:1278 +0x199
  database/sql.ctxDriverStmtExec()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/ctxutil.go:65 +0xf5
  database/sql.resultFromStatement()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2635 +0x1be
  database/sql.(*Stmt).ExecContext.func1()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2609 +0x10a
  database/sql.(*DB).retry()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:1538 +0x4c
  database/sql.(*Stmt).ExecContext()
      /opt/hostedtoolcache/go/1.20.14/x64/src/database/sql/sql.go:2603 +0x19c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertBagsLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:496 +0x7ee
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).upsertLocked()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:332 +0x30c
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*apply).Apply()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/apply.go:230 +0x1069
  github.com/cockroachdb/cdc-sink/internal/target/apply.(*Acceptor).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/target/apply/acceptor.go:48 +0x1ea
  github.com/cockroachdb/cdc-sink/internal/types.(*orderedAdapter).AcceptTableBatch()
      /home/runner/work/cdc-sink/cdc-sink/internal/types/acceptors.go:85 +0xb9
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepOnce()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:265 +0x159b
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:143 +0x5f0
  github.com/cockroachdb/cdc-sink/internal/util/stopvar.DoWhenChangedOrInterval[...]()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopvar/stopvar.go:71 +0x253
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).sweepTable()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:122 +0x1fc
  github.com/cockroachdb/cdc-sink/internal/sequencer/besteffort.(*BestEffort).Start.func1.1()
      /home/runner/work/cdc-sink/cdc-sink/internal/sequencer/besteffort/best_effort.go:97 +0x2d9
  github.com/cockroachdb/cdc-sink/internal/util/stopper.(*Context).Go.func1()
      /home/runner/work/cdc-sink/cdc-sink/internal/util/stopper/stopper.go:187 +0xb4
==================

bobvawter avatar Feb 21 '24 15:02 bobvawter