-
Notifications
You must be signed in to change notification settings - Fork 4.1k
v22.1.1: sql: alter table attempted to update job for mutation 2, but job already exists with mutation 1 #82921
Description
This issue was autofiled by Sentry. It represents a crash or reported error on a live cluster with telemetry enabled.
Sentry link: https://sentry.io/organizations/cockroach-labs/issues/3350717600/?referrer=webhooks_plugin
Panic message:
table.go:202: attempted to update job for mutation 2, but job already exists with mutation 1
(1)
Wraps: (2) assertion failure
Wraps: (3) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).createOrUpdateSchemaChangeJob
| github.com/cockroachdb/cockroach/pkg/sql/table.go:202
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).writeSchemaChange
| github.com/cockroachdb/cockroach/pkg/sql/table.go:248
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).dropIndexByName
| github.com/cockroachdb/cockroach/pkg/sql/drop_index.go:554
| github.com/cockroachdb/cockroach/pkg/sql.(*dropIndexNode).startExec
| github.com/cockroachdb/cockroach/pkg/sql/drop_index.go:162
| github.com/cockroachdb/cockroach/pkg/sql.startExec.func2
| github.com/cockroachdb/cockroach/pkg/sql/plan.go:516
| github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal.func1
| github.com/cockroachdb/cockroach/pkg/sql/walk.go:112
| github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal
| github.com/cockroachdb/cockroach/pkg/sql/walk.go:297
| github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visit
| github.com/cockroachdb/cockroach/pkg/sql/walk.go:79
| github.com/cockroachdb/cockroach/pkg/sql.walkPlan
| github.com/cockroachdb/cockroach/pkg/sql/walk.go:43
| github.com/cockroachdb/cockroach/pkg/sql.startExec
| github.com/cockroachdb/cockroach/pkg/sql/plan.go:519
| github.com/cockroachdb/cockroach/pkg/sql.(*planNodeToRowSource).Start
| github.com/cockroachdb/cockroach/pkg/sql/plan_node_to_row_source.go:146
| github.com/cockroachdb/cockroach/pkg/sql/colexec.(*Columnarizer).Init
| github.com/cockroachdb/cockroach/pkg/sql/colexec/columnarizer.go:158
| github.com/cockroachdb/cockroach/pkg/sql/colflow.(*batchInfoCollector).Init
| github.com/cockroachdb/cockroach/pkg/sql/colflow/stats.go:90
| github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).init.func1
| github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:235
| github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError
| github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:91
| github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).init
| github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:234
| github.com/cockroachdb/cockroach/pkg/sql/colflow.(*BatchFlowCoordinator).Run
| github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:279
| github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlow).Run
| github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:260
| github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).Run
| github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:597
| github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRun
| github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1445
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithDistSQLEngine
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1467
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1143
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:686
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:143
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execPortal
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:231
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd.func2
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1952
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1954
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1800
| github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:748
| github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1
| github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:724
| runtime.goexit
| src/runtime/asm_amd64.s:1581
Wraps: (4) attempted to update job for mutation 2, but job already exists with mutation 1
Error types: (1) *colexecerror.notInternalError (2) *assert.withAssertionFailure (3) *withstack.withStack (4) *errutil.leafError
-- report composition:
*errutil.leafError: attempted to update job for mutation 2, but job already exists with mutation 1
table.go:202: *withstack.withStack (top exception)
*assert.withAssertionFailure
*colexecerror.notInternalError
Stacktrace (expand for inline code snippets):
Lines 201 to 203 in 242d13b
| if mutationID != descpb.InvalidMutationID && mutationID != oldDetails.TableMutationID { | |
| return errors.AssertionFailedf( | |
| "attempted to update job for mutation %d, but job already exists with mutation %d", |
Lines 247 to 249 in 242d13b
| if !tableDesc.IsNew() { | |
| if err := p.createOrUpdateSchemaChangeJob(ctx, tableDesc, jobDesc, mutationID); err != nil { | |
| return err |
cockroach/pkg/sql/drop_index.go
Lines 553 to 555 in 242d13b
| mutationID := tableDesc.ClusterVersion().NextMutationID | |
| if err := p.writeSchemaChange(ctx, tableDesc, mutationID, jobDesc); err != nil { | |
| return err |
cockroach/pkg/sql/drop_index.go
Lines 161 to 163 in 242d13b
| // different index than the one being dropped. | |
| if err := params.p.dropIndexByName( | |
| ctx, index.tn, index.idxName, tableDesc, n.n.IfExists, n.n.DropBehavior, checkIdxConstraint, |
Lines 515 to 517 in 242d13b
| } | |
| return n.startExec(params) | |
| }, |
Lines 111 to 113 in 242d13b
| } | |
| v.err = v.observer.leaveNode(name, plan) | |
| }() |
Lines 296 to 298 in 242d13b
| } | |
| } | |
Lines 78 to 80 in 242d13b
| } | |
| v.visitInternal(plan, name) | |
| return plan |
Lines 42 to 44 in 242d13b
| v := makePlanVisitor(ctx, observer) | |
| v.visit(plan) | |
| return v.err |
Lines 518 to 520 in 242d13b
| } | |
| return walkPlan(params.ctx, plan, o) | |
| } |
cockroach/pkg/sql/plan_node_to_row_source.go
Lines 145 to 147 in 242d13b
| // This starts all of the nodes below this node. | |
| if err := startExec(p.params, p.node); err != nil { | |
| p.MoveToDraining(err) |
cockroach/pkg/sql/colexec/columnarizer.go
Lines 157 to 159 in 242d13b
| ctx = c.StartInternalNoSpan(ctx) | |
| c.input.Start(ctx) | |
| if execStatsHijacker, ok := c.input.(execinfra.ExecStatsForTraceHijacker); ok { |
cockroach/pkg/sql/colflow/stats.go
Lines 89 to 91 in 242d13b
| func (bic *batchInfoCollector) Init(ctx context.Context) { | |
| bic.Operator.Init(ctx) | |
| bic.mu.Lock() |
cockroach/pkg/sql/colflow/flow_coordinator.go
Lines 234 to 236 in 242d13b
| return colexecerror.CatchVectorizedRuntimeError(func() { | |
| f.input.Root.Init(ctx) | |
| }) |
cockroach/pkg/sql/colexecerror/error.go
Lines 90 to 92 in 242d13b
| }() | |
| operation() | |
| return retErr |
cockroach/pkg/sql/colflow/flow_coordinator.go
Lines 233 to 235 in 242d13b
| func (f *BatchFlowCoordinator) init(ctx context.Context) error { | |
| return colexecerror.CatchVectorizedRuntimeError(func() { | |
| f.input.Root.Init(ctx) |
cockroach/pkg/sql/colflow/flow_coordinator.go
Lines 278 to 280 in 242d13b
| if err := f.init(ctx); err != nil { | |
| f.pushError(err) |
cockroach/pkg/sql/colflow/vectorized_flow.go
Lines 259 to 261 in 242d13b
| log.VEvent(ctx, 1, "running the batch flow coordinator in the flow's goroutine") | |
| f.batchFlowCoordinator.Run(ctx) | |
| } |
cockroach/pkg/sql/distsql_running.go
Lines 596 to 598 in 242d13b
| // TODO(radu): this should go through the flow scheduler. | |
| flow.Run(ctx, func() {}) | |
cockroach/pkg/sql/distsql_running.go
Lines 1444 to 1446 in 242d13b
| recv.expectedRowsRead = int64(physPlan.TotalEstimatedScannedRows) | |
| runCleanup := dsp.Run(ctx, planCtx, txn, physPlan, recv, evalCtx, nil /* finishedSetupFn */) | |
| return func() { |
cockroach/pkg/sql/conn_executor_exec.go
Lines 1466 to 1468 in 242d13b
| // the planner whether or not to plan remote table readers. | |
| cleanup := ex.server.cfg.DistSQLPlanner.PlanAndRun( | |
| ctx, evalCtx, planCtx, planner.txn, planner.curPlan.main, recv, |
cockroach/pkg/sql/conn_executor_exec.go
Lines 1142 to 1144 in 242d13b
| ex.sessionTracing.TraceExecStart(ctx, "distributed") | |
| stats, err := ex.execWithDistSQLEngine( | |
| ctx, planner, stmt.AST.StatementReturnType(), res, distribute, progAtomic, |
cockroach/pkg/sql/conn_executor_exec.go
Lines 685 to 687 in 242d13b
| if err := ex.dispatchToExecutionEngine(stmtCtx, p, res); err != nil { | |
| stmtThresholdSpan.Finish() |
cockroach/pkg/sql/conn_executor_exec.go
Lines 142 to 144 in 242d13b
| } else { | |
| ev, payload, err = ex.execStmtInOpenState(ctx, parserStmt, prepared, pinfo, res, canAutoCommit) | |
| } |
cockroach/pkg/sql/conn_executor_exec.go
Lines 230 to 232 in 242d13b
| } | |
| ev, payload, err = ex.execStmt(ctx, portal.Stmt.Statement, portal.Stmt, pinfo, stmtRes, canAutoCommit) | |
| // Portal suspension is supported via a "side" state machine |
cockroach/pkg/sql/conn_executor.go
Lines 1951 to 1953 in 242d13b
| canAutoCommit := ex.implicitTxn() && tcmd.FollowedBySync | |
| ev, payload, err = ex.execPortal(ctx, portal, portalName, stmtRes, pinfo, canAutoCommit) | |
| return err |
cockroach/pkg/sql/conn_executor.go
Lines 1953 to 1955 in 242d13b
| return err | |
| }() | |
| // Note: we write to ex.statsCollector.phaseTimes, instead of ex.phaseTimes, |
cockroach/pkg/sql/conn_executor.go
Lines 1799 to 1801 in 242d13b
| var err error | |
| if err = ex.execCmd(); err != nil { | |
| if errors.IsAny(err, io.EOF, errDrainingComplete) { |
cockroach/pkg/sql/conn_executor.go
Lines 747 to 749 in 242d13b
| }() | |
| return h.ex.run(ctx, s.pool, reserved, cancel) | |
| } |
cockroach/pkg/sql/pgwire/conn.go
Lines 723 to 725 in 242d13b
| reservedOwned = false // We're about to pass ownership away. | |
| retErr = sqlServer.ServeConn(ctx, connHandler, reserved, cancelConn) | |
| }() |
src/runtime/asm_amd64.s#L1580-L1582 in runtime.goexit
pkg/sql/table.go in pkg/sql.(*planner).createOrUpdateSchemaChangeJob at line 202
pkg/sql/table.go in pkg/sql.(*planner).writeSchemaChange at line 248
pkg/sql/drop_index.go in pkg/sql.(*planner).dropIndexByName at line 554
pkg/sql/drop_index.go in pkg/sql.(*dropIndexNode).startExec at line 162
pkg/sql/plan.go in pkg/sql.startExec.func2 at line 516
pkg/sql/walk.go in pkg/sql.(*planVisitor).visitInternal.func1 at line 112
pkg/sql/walk.go in pkg/sql.(*planVisitor).visitInternal at line 297
pkg/sql/walk.go in pkg/sql.(*planVisitor).visit at line 79
pkg/sql/walk.go in pkg/sql.walkPlan at line 43
pkg/sql/plan.go in pkg/sql.startExec at line 519
pkg/sql/plan_node_to_row_source.go in pkg/sql.(*planNodeToRowSource).Start at line 146
pkg/sql/colexec/columnarizer.go in pkg/sql/colexec.(*Columnarizer).Init at line 158
pkg/sql/colflow/stats.go in pkg/sql/colflow.(*batchInfoCollector).Init at line 90
pkg/sql/colflow/flow_coordinator.go in pkg/sql/colflow.(*BatchFlowCoordinator).init.func1 at line 235
pkg/sql/colexecerror/error.go in pkg/sql/colexecerror.CatchVectorizedRuntimeError at line 91
pkg/sql/colflow/flow_coordinator.go in pkg/sql/colflow.(*BatchFlowCoordinator).init at line 234
pkg/sql/colflow/flow_coordinator.go in pkg/sql/colflow.(*BatchFlowCoordinator).Run at line 279
pkg/sql/colflow/vectorized_flow.go in pkg/sql/colflow.(*vectorizedFlow).Run at line 260
pkg/sql/distsql_running.go in pkg/sql.(*DistSQLPlanner).Run at line 597
pkg/sql/distsql_running.go in pkg/sql.(*DistSQLPlanner).PlanAndRun at line 1445
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).execWithDistSQLEngine at line 1467
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).dispatchToExecutionEngine at line 1143
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).execStmtInOpenState at line 686
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).execStmt at line 143
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).execPortal at line 231
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).execCmd.func2 at line 1952
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).execCmd at line 1954
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).run at line 1800
pkg/sql/conn_executor.go in pkg/sql.(*Server).ServeConn at line 748
pkg/sql/pgwire/conn.go in pkg/sql/pgwire.(*conn).processCommandsAsync.func1 at line 724
src/runtime/asm_amd64.s in runtime.goexit at line 1581
| Tag | Value |
|---|---|
| Cockroach Release | v22.1.1 |
| Cockroach SHA: | 242d13b |
| Platform | windows amd64 |
| Distribution | CCL |
| Environment | v22.1.1 |
| Command | demo |
| Go Version | `` |
| # of CPUs | |
| # of Goroutines |
Jira issue: CRDB-16731