Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sentry: txn.go:781: deadline below read timestamp is nonsensical; txn has would have no chance to commit. Deadline: 1667084312.596627533,0. Read timestamp: 1667084452.539633676,2 Previous Deadline: <nil>. (1)... #90923

Closed
cockroach-teamcity opened this issue Oct 29, 2022 · 1 comment
Labels
C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. O-sentry Originated from an in-the-wild panic report.

Comments

@cockroach-teamcity
Copy link
Member

cockroach-teamcity commented Oct 29, 2022

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/3705990803/?referrer=webhooks_plugin

Panic message:

txn.go:781: deadline below read timestamp is nonsensical; txn has would have no chance to commit. Deadline: 1667084312.596627533,0. Read timestamp: 1667084452.539633676,2 Previous Deadline: .
(1) assertion failure
Wraps: (2) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/kv.(*Txn).UpdateDeadline
| /go/src/github.com/cockroachdb/cockroach/pkg/kv/txn.go:781
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*leasedDescriptors).maybeUpdateDeadline
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/leased_descriptors.go:217
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*leasedDescriptors).getResult
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/leased_descriptors.go:183
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*leasedDescriptors).getByName
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/leased_descriptors.go:112
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).getByName
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/descriptor.go:200
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).getDatabaseByName
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/database.go:63
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).GetImmutableDatabaseByName
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/database.go:45
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).getObjectByNameIgnoringRequiredAndType
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/object.go:131
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).getObjectByName
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/object.go:61
| github.com/cockroachdb/cockroach/pkg/sql/catalog/descs.(*Collection).GetObjectDesc
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/descs/object.go:36
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).LookupObject
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/resolver.go:190
| github.com/cockroachdb/cockroach/pkg/sql/catalog/resolver.ResolveExisting
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/resolver/resolver.go:418
| github.com/cockroachdb/cockroach/pkg/sql/catalog/resolver.ResolveExistingObject
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/resolver/resolver.go:184
| github.com/cockroachdb/cockroach/pkg/sql/catalog/resolver.ResolveExistingTableObject
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/catalog/resolver/resolver.go:121
| github.com/cockroachdb/cockroach/pkg/sql.(*optCatalog).ResolveDataSource
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt_catalog.go:206
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).resolveDataSource
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/util.go:618
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).resolveTable
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/util.go:583
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).resolveTableForMutation
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/util.go:543
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildUpdate
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/update.go:77
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt.func3
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:298
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).processWiths
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/with.go:111
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmt
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:297
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:241
| github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder.(*Builder).Build
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:215
| github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildReusableMemo
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:380
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).prepareUsingOptimizer
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:123
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).populatePrepared
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:287
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).prepare.func1
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:220
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).prepare
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:226
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).addPreparedStmt
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:111
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execPrepare
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:53
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd
| /go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1812
Wraps: (3) deadline below read timestamp is nonsensical; txn has would have no chance to commit. Deadline: 1667084312.596627533,0. Read timestamp: 1667084452.539633676,2 Previous Deadline: .
Error types: (1) *assert.withAssertionFailure (2) *withstack.withStack (3) *errutil.leafError
-- report composition:
*errutil.leafError: deadline below read timestamp is nonsensical; txn has would have no chance to commit. Deadline: 1667084312.596627533,0. Read timestamp: 1667084452.539633676,2 Previous Deadline: .
txn.go:781: *withstack.withStack (top exception)
*assert.withAssertionFailure

Stacktrace (expand for inline code snippets):

cockroach/pkg/kv/txn.go

Lines 780 to 782 in 5c55010

if deadline.Less(readTimestamp) {
return errors.AssertionFailedf("deadline below read timestamp is nonsensical; "+
"txn has would have no chance to commit. Deadline: %s. Read timestamp: %s Previous Deadline: %s.",
in pkg/kv.(*Txn).UpdateDeadline
if !deadline.IsEmpty() {
return txn.UpdateDeadline(ctx, deadline)
}
in pkg/sql/catalog/descs.(*leasedDescriptors).maybeUpdateDeadline
if setDeadline {
if err := ld.maybeUpdateDeadline(ctx, txn, nil); err != nil {
return nil, false, err
in pkg/sql/catalog/descs.(*leasedDescriptors).getResult
const setTxnDeadline = true
return ld.getResult(ctx, txn, setTxnDeadline, ldesc, err)
}
in pkg/sql/catalog/descs.(*leasedDescriptors).getByName
var shouldReadFromStore bool
desc, shouldReadFromStore, err = tc.leased.getByName(ctx, tc.deadlineHolder(txn), parentID, parentSchemaID, name)
if err != nil {
in pkg/sql/catalog/descs.(*Collection).getByName
) (catalog.DatabaseDescriptor, error) {
found, desc, err := tc.getByName(
ctx, txn, nil, nil, name, flags.AvoidCached, flags.RequireMutable,
in pkg/sql/catalog/descs.(*Collection).getDatabaseByName
flags.RequireMutable = false
return tc.getDatabaseByName(ctx, txn, name, flags)
}
in pkg/sql/catalog/descs.(*Collection).GetImmutableDatabaseByName
if catalogName != "" {
db, err = tc.GetImmutableDatabaseByName(ctx, txn, catalogName, parentFlags)
if err != nil || db == nil {
in pkg/sql/catalog/descs.(*Collection).getObjectByNameIgnoringRequiredAndType
}()
prefix, desc, err = tc.getObjectByNameIgnoringRequiredAndType(
ctx, txn, catalogName, schemaName, objectName, flags,
in pkg/sql/catalog/descs.(*Collection).getObjectByName
) (prefix catalog.ResolvedObjectPrefix, desc catalog.Descriptor, err error) {
return tc.getObjectByName(ctx, txn, db, schema, object, flags)
}
in pkg/sql/catalog/descs.(*Collection).GetObjectDesc
prefix, objMeta, err = sc.GetObjectDesc(ctx, p.txn, dbName, scName, obName, flags)
return objMeta != nil, prefix, objMeta, err
in pkg/sql.(*planner).LookupObject
// No luck so far. Compatibility with CockroachDB v1.1: try D.public.T instead.
found, prefix, result, err = r.LookupObject(ctx, lookupFlags, u.Schema(), tree.PublicSchema, u.Object())
if found && err == nil {
in pkg/sql/catalog/resolver.ResolveExisting
) (res catalog.Descriptor, _ catalog.ResolvedObjectPrefix, err error) {
found, prefix, obj, err := ResolveExisting(ctx, un, sc, lookupFlags, sc.CurrentDatabase(), sc.CurrentSearchPath())
if err != nil {
in pkg/sql/catalog/resolver.ResolveExistingObject
un := tn.ToUnresolvedObjectName()
desc, prefix, err := ResolveExistingObject(ctx, sc, un, lookupFlags)
if err != nil || desc == nil {
in pkg/sql/catalog/resolver.ResolveExistingTableObject
lflags := tree.ObjectLookupFlagsWithRequiredTableKind(tree.ResolveAnyTableKind)
prefix, desc, err := resolver.ResolveExistingTableObject(ctx, oc.planner, &oc.tn, lflags)
if err != nil {
in pkg/sql.(*optCatalog).ResolveDataSource
}
ds, resName, err := b.catalog.ResolveDataSource(b.ctx, flags, tn)
if err != nil {
in pkg/sql/opt/optbuilder.(*Builder).resolveDataSource
) (cat.Table, tree.TableName) {
ds, _, resName := b.resolveDataSource(tn, priv)
tab, ok := ds.(cat.Table)
in pkg/sql/opt/optbuilder.(*Builder).resolveTable
case *tree.TableName:
tab, alias = b.resolveTable(t, priv)
depName = opt.DepByName(t)
in pkg/sql/opt/optbuilder.(*Builder).resolveTableForMutation
// Find which table we're working on, check the permissions.
tab, depName, alias, refColumns := b.resolveTableForMutation(upd.Table, privilege.UPDATE)
in pkg/sql/opt/optbuilder.(*Builder).buildUpdate
return b.processWiths(stmt.With, inScope, func(inScope *scope) *scope {
return b.buildUpdate(stmt, inScope)
})
in pkg/sql/opt/optbuilder.(*Builder).buildStmt.func3
inScope.atRoot = false
outScope := buildStmt(inScope)
outScope.expr = b.buildWiths(outScope.expr, correlatedCTEs)
in pkg/sql/opt/optbuilder.(*Builder).processWiths
case *tree.Update:
return b.processWiths(stmt.With, inScope, func(inScope *scope) *scope {
return b.buildUpdate(stmt, inScope)
in pkg/sql/opt/optbuilder.(*Builder).buildStmt
b.ctes = nil
outScope = b.buildStmt(stmt, desiredTypes, inScope)
// Build With operators for any CTEs hoisted to the top level.
in pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot
// and physical properties.
outScope := b.buildStmtAtRoot(b.stmt, nil /* desiredTypes */)
in pkg/sql/opt/optbuilder.(*Builder).Build
bld.KeepPlaceholders = true
if err := bld.Build(); err != nil {
return nil, err
in pkg/sql.(*optPlanningCtx).buildReusableMemo
memo, err := opc.buildReusableMemo(ctx)
if err != nil {
in pkg/sql.(*planner).prepareUsingOptimizer
// future.
flags, err := p.prepareUsingOptimizer(ctx)
if err != nil {
in pkg/sql.(*connExecutor).populatePrepared
p.semaCtx.Annotations = tree.MakeAnnotations(stmt.NumAnnotations)
flags, err = ex.populatePrepared(ctx, txn, placeholderHints, p)
return err
in pkg/sql.(*connExecutor).prepare.func1
// Use the existing transaction.
if err := prepare(ctx, txn); err != nil {
return nil, err
in pkg/sql.(*connExecutor).prepare
// Prepare the query. This completes the typing of placeholders.
prepared, err := ex.prepare(ctx, stmt, placeholderHints, rawTypeHints, origin)
if err != nil {
in pkg/sql.(*connExecutor).addPreparedStmt
stmt := makeStatement(parseCmd.Statement, ex.generateID())
ps, err := ex.addPreparedStmt(
ctx,
in pkg/sql.(*connExecutor).execPrepare
stmtCtx := withStatement(ctx, ex.curStmtAST)
ev, payload = ex.execPrepare(stmtCtx, tcmd)
case DescribeStmt:
in pkg/sql.(*connExecutor).execCmd

pkg/kv/txn.go in pkg/kv.(*Txn).UpdateDeadline at line 781
pkg/sql/catalog/descs/leased_descriptors.go in pkg/sql/catalog/descs.(*leasedDescriptors).maybeUpdateDeadline at line 217
pkg/sql/catalog/descs/leased_descriptors.go in pkg/sql/catalog/descs.(*leasedDescriptors).getResult at line 183
pkg/sql/catalog/descs/leased_descriptors.go in pkg/sql/catalog/descs.(*leasedDescriptors).getByName at line 112
pkg/sql/catalog/descs/descriptor.go in pkg/sql/catalog/descs.(*Collection).getByName at line 200
pkg/sql/catalog/descs/database.go in pkg/sql/catalog/descs.(*Collection).getDatabaseByName at line 63
pkg/sql/catalog/descs/database.go in pkg/sql/catalog/descs.(*Collection).GetImmutableDatabaseByName at line 45
pkg/sql/catalog/descs/object.go in pkg/sql/catalog/descs.(*Collection).getObjectByNameIgnoringRequiredAndType at line 131
pkg/sql/catalog/descs/object.go in pkg/sql/catalog/descs.(*Collection).getObjectByName at line 61
pkg/sql/catalog/descs/object.go in pkg/sql/catalog/descs.(*Collection).GetObjectDesc at line 36
pkg/sql/resolver.go in pkg/sql.(*planner).LookupObject at line 190
pkg/sql/catalog/resolver/resolver.go in pkg/sql/catalog/resolver.ResolveExisting at line 418
pkg/sql/catalog/resolver/resolver.go in pkg/sql/catalog/resolver.ResolveExistingObject at line 184
pkg/sql/catalog/resolver/resolver.go in pkg/sql/catalog/resolver.ResolveExistingTableObject at line 121
pkg/sql/opt_catalog.go in pkg/sql.(*optCatalog).ResolveDataSource at line 206
pkg/sql/opt/optbuilder/util.go in pkg/sql/opt/optbuilder.(*Builder).resolveDataSource at line 618
pkg/sql/opt/optbuilder/util.go in pkg/sql/opt/optbuilder.(*Builder).resolveTable at line 583
pkg/sql/opt/optbuilder/util.go in pkg/sql/opt/optbuilder.(*Builder).resolveTableForMutation at line 543
pkg/sql/opt/optbuilder/update.go in pkg/sql/opt/optbuilder.(*Builder).buildUpdate at line 77
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).buildStmt.func3 at line 298
pkg/sql/opt/optbuilder/with.go in pkg/sql/opt/optbuilder.(*Builder).processWiths at line 111
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).buildStmt at line 297
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot at line 241
pkg/sql/opt/optbuilder/builder.go in pkg/sql/opt/optbuilder.(*Builder).Build at line 215
pkg/sql/plan_opt.go in pkg/sql.(*optPlanningCtx).buildReusableMemo at line 380
pkg/sql/plan_opt.go in pkg/sql.(*planner).prepareUsingOptimizer at line 123
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).populatePrepared at line 287
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).prepare.func1 at line 220
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).prepare at line 226
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).addPreparedStmt at line 111
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).execPrepare at line 53
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).execCmd at line 1812
Tag Value
Cockroach Release v21.2.16
Cockroach SHA: 5c55010
Platform linux amd64
Distribution CCL
Environment v21.2.16
Command server
Go Version ``
# of CPUs
# of Goroutines

Jira issue: CRDB-21013

@cockroach-teamcity cockroach-teamcity added C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. O-sentry Originated from an in-the-wild panic report. labels Oct 29, 2022
craig bot pushed a commit that referenced this issue Nov 8, 2022
90964: streamingccl: avoid passing `evalCtx`, `txn` as parameters to ingestion & replication funcs r=ZhouXing19 a=ZhouXing19

This PR is part of the effort to eliminate usages of `eval.Context.Txn`.
It moves 

1. the definition of `StreamIngestionManager` and `ReplicationStreamManager` under eval;
2. the implementation of `StreamIngestionManager` and `ReplicationStreamManager` via `sql.planner`.

The core changes are 

```
// GetReplicationStreamManager returns a ReplicationStreamManager.
func (p *planner) GetReplicationStreamManager(
	ctx context.Context,
) (eval.ReplicationStreamManager, error) {
	return streaming.GetReplicationStreamManager(ctx, p.EvalContext(), p.Txn())
}

// GetStreamIngestManager returns a StreamIngestManager.
func (p *planner) GetStreamIngestManager(ctx context.Context) (eval.StreamIngestManager, error) {
	return streaming.GetStreamIngestManager(ctx, p.EvalContext(), p.Txn())
}
```

so that the functions under these 2 interfaces run upon `eval.Context` and `kv.Txn` from the `sql.planner`. 

Follow-up: 

- [ ] Pass internal executor from planner too, rather than using `register.ex`.

informs #90923 

91249: acceptance: deflake `TestDockerCLI/test_txn_prompt` r=rafiss a=renatolabs

That test would sometimes fail because of the semantics of `expect` and `send` when the expected string was previously written using `send`.

When `expect` is called, the buffer looked at includes content previously sent using `send`. This means that if one runs `send "foo"; expect foo`, the `expect` call will match instataneously even if the program's output after the send does not contain `foo`.

In the case of the test fixed here, we are supposed to expect for the new prompt to be printed after setting it with `\set prompt1`. In order to properly check whether the prompt changed, this PR changes the prompt `expect` call to use a regular expression that matches the new prompt only if it sits in the beginning of a line.

Prior to this commit, since the `expect` call would return immediately, there was a chance the `send "SET DATABASE"` command could run before the cockroach CLI had the chance to print the new prompt, leading to the following error:

```
abcdefaultdbdef \set prompt1 woo
SET database
woo  ->
.221103 18:13:35.539667600 EXPECT TEST: TIMEOUT WAITING FOR "
 -> "
non-zero exit code: 1
```

Epic: None
Release note: None

91401: spanconfigsqltranslator: add sqlutil.InternalExecutor to SQLTranslator r=arulajmani a=ZhouXing19

This commit is part of the effort of having an internal executor better bound to its outer txn if there's one.

The next step after this commit is to replace the executor used in `s.ptsProvider.GetState()` in `SQLTranslator.Translate()` to the one hanging off `SQLTranslator`.

Informs: #91004

Release note: None

91423: roachpb: fix bug when logging lease in NLE r=ajwerner a=ajwerner

We were logging `lease holder unknown` when the deprecated field was not populated.

Epic: None

Release note: None

91436: multitenant: add admin function `RangeIterator failed to seek` test cases r=rafiss a=ecwall

refs #91434

This change adds test cases for admin functions (see #91434) that fail because of a `RangeIterator failed to seek` error once the multitenant check is bypassed. This needs to be addressed before those admin functions can be supported for secondary tenants.

Release note: None

91508: logictest: fix flake in fk due to sequence non-determinism r=ajwerner a=ajwerner

See [here](https://teamcity.cockroachdb.com/buildConfiguration/Cockroach_BazelEssentialCi/7392167?showRootCauses=false&expandBuildChangesSection=true&expandBuildProblemsSection=true&expandBuildTestsSection=true). This patch stops showing the sequence column while still relying on its ordering properties.

Epic: None

Release note: None

91515: kvserver: return DeprecatedLeaseHolder field in NLHEs r=arulajmani a=arulajmani

v22.1 binaries assume that the leaseholder is unknown when logging NLHE errors if the (Deprecated)LeaseHolder field is unset -- regardless of if the Lease is set or not. We broke this logging in 0402f47 (for mixed version clusters) when we stopped shipping back leaseholder information (in favour of only shipping lease information) on NLHEs. This patch fixes this by populating the (Deprecated)LeaseHolder field when constructing NLHEs.

Release note: None

Co-authored-by: Jane Xing <[email protected]>
Co-authored-by: Renato Costa <[email protected]>
Co-authored-by: Andrew Werner <[email protected]>
Co-authored-by: Evan Wall <[email protected]>
Co-authored-by: Arul Ajmani <[email protected]>
@yuzefovich
Copy link
Member

dup of #76727

@exalate-issue-sync exalate-issue-sync bot changed the title sentry: txn.go:781: deadline below read timestamp is nonsensical; txn has would have no chance to commit. Deadline: 1667084312.596627533,0. Read timestamp: 1667084452.539633676,2 Previous Deadline: <nil>. (1)... sentry: txn.go:781: deadline below read timestamp is nonsensical; txn has would have no chance to commit. Deadline: 1667084312.596627533,0. Read timestamp: 1667084452.539633676,2 Previous Deadline: <nil>. (1)... Nov 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. O-sentry Originated from an in-the-wild panic report.
Projects
None yet
Development

No branches or pull requests

2 participants