-
Notifications
You must be signed in to change notification settings - Fork 4.1k
sql: race in CANCEL QUERIES #28033
Copy link
Copy link
Closed
Labels
A-sql-executionRelating to SQL execution.Relating to SQL execution.C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.
Description
The following test finds a data race when run with make stressrace. Found while working on #27991.
func TestCancelQueriesRace(t *testing.T) {
s, sqlDBRaw, _ := serverutils.StartServer(t, base.TestServerArgs{})
defer s.Stopper().Stop(context.Background())
sqlDB := sqlutils.MakeSQLRunner(sqlDBRaw)
go func() {
_, _ = sqlDB.DB.Exec(`SELECT pg_sleep(1000)`)
}()
sqlDB.Exec(t, `CANCEL QUERIES (
SELECT query_id FROM [SHOW QUERIES] WHERE query LIKE 'SELECT pg_sleep%'
)`)
sqlDB.Exec(t, `CANCEL QUERIES (
SELECT query_id FROM [SHOW QUERIES] WHERE query LIKE 'SELECT pg_sleep%'
)`)
}
==================
WARNING: DATA RACE
Read at 0x00c4218520e0 by goroutine 252:
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*ResolvableFunctionReference).Format()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/function_name.go:42 +0x3c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:47 +0x75
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:268 +0xb2
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Format()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/expr.go:1252 +0x1e8
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:47 +0x75
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:268 +0xb2
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*SelectExpr).Format()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:169 +0x84
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:47 +0x75
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:268 +0xb2
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*SelectExprs).Format()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:136 +0x74
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:47 +0x75
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:268 +0xb2
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*SelectClause).Format()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:103 +0x1b1
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:47 +0x75
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:268 +0xb2
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*Select).Format()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/select.go:52 +0xbe
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).formatNodeOrHideConstants()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/hide_constants.go:47 +0x75
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FmtCtx).FormatNode()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:268 +0xb2
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.AsStringWithFlags()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:298 +0x65
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.AsString()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/format.go:304 +0x4b
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*Select).String()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/stmt.go:847 +0x44
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).serialize()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1967 +0x373
github.com/cockroachdb/cockroach/pkg/sql.(*SessionRegistry).SerializeAll()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:929 +0x263
github.com/cockroachdb/cockroach/pkg/server.(*statusServer).ListLocalSessions()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/server/status.go:1280 +0xfb
github.com/cockroachdb/cockroach/pkg/server/serverpb._Status_ListLocalSessions_Handler.func1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/server/serverpb/status.pb.go:1551 +0xa1
github.com/cockroachdb/cockroach/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc/server.go:48 +0xc23
github.com/cockroachdb/cockroach/pkg/rpc.NewServerWithInterceptor.func1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/rpc/context.go:166 +0x10c
github.com/cockroachdb/cockroach/pkg/server/serverpb._Status_ListLocalSessions_Handler()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/server/serverpb/status.pb.go:1553 +0x1e3
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).processUnaryRPC()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:1011 +0xde7
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).handleStream()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:1249 +0x1364
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:680 +0xac
Previous write at 0x00c4218520e0 by goroutine 134:
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*ResolvableFunctionReference).Resolve()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/function_name.go:59 +0x335
github.com/cockroachdb/cockroach/pkg/sql/sem/transform.(*IsAggregateVisitor).VisitPre()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/transform/aggregates.go:40 +0x15a
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExpr()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:680 +0x5c
github.com/cockroachdb/cockroach/pkg/sql/sem/tree.WalkExprConst()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/tree/walk.go:693 +0x56
github.com/cockroachdb/cockroach/pkg/sql/sem/transform.(*ExprTransformContext).AggregateInExpr()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/sem/transform/expr_transform.go:63 +0xee
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).hasAggregates()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/groupby.go:105 +0x183
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).needsAggregation()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/groupby.go:95 +0xd8
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelectClause()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:294 +0xf0
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildSelect()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:248 +0x3a8
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:176 +0x14e
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).Build()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:133 +0x126
github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/plan.go:378 +0x676
github.com/cockroachdb/cockroach/pkg/sql.(*planner).optionallyUseOptimizer()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/planner.go:551 +0xeb
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:728 +0x232
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:401 +0x108d
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:95 +0x46e
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1078 +0x31dc
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:415 +0x1e0
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl.func3()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:267 +0x1a9
Goroutine 252 (running) created at:
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).serveStreams.func1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:678 +0xb8
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/transport.(*http2Server).operateHeaders()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/transport/http2_server.go:417 +0x1446
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/transport.(*http2Server).HandleStreams()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/transport/http2_server.go:457 +0x87a
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).serveStreams()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:676 +0x16e
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).handleRawConn.func2()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:631 +0x53
github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc.(*Server).handleRawConn.func3()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/vendor/google.golang.org/grpc/server.go:639 +0x34
Goroutine 134 (running) created at:
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).serveImpl()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:266 +0x147a
github.com/cockroachdb/cockroach/pkg/sql/pgwire.serveConn()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:162 +0x240
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*Server).ServeConn()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/server.go:453 +0x9b2
github.com/cockroachdb/cockroach/pkg/server.(*Server).Start.func19.1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/server/server.go:1608 +0x17e
github.com/cockroachdb/cockroach/pkg/util/netutil.(*Server).ServeWith.func1()
/Users/dan/crdb/src/github.com/cockroachdb/cockroach/pkg/util/netutil/net.go:141 +0xd9
==================
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-sql-executionRelating to SQL execution.Relating to SQL execution.C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.