cockroach
cockroach copied to clipboard
opt: v23.1.12: span must be fully contained in the bucket
This issue was auto filed by Sentry. It represents a crash or reported error on a live cluster with telemetry enabled.
Sentry Link: https://cockroach-labs.sentry.io/issues/5351250767/?referrer=webhooks_plugin
Panic Message:
histogram.go:694: span must be fully contained in the bucket
(1) assertion failure
Wraps: (2) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/sql/opt/props.getFilteredBucket
| github.com/cockroachdb/cockroach/pkg/sql/opt/props/histogram.go:694
| github.com/cockroachdb/cockroach/pkg/sql/opt/props.(*Histogram).filter
| github.com/cockroachdb/cockroach/pkg/sql/opt/props/histogram.go:341
| github.com/cockroachdb/cockroach/pkg/sql/opt/props.(*Histogram).Filter
| github.com/cockroachdb/cockroach/pkg/sql/opt/props/histogram.go:407
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*statisticsBuilder).updateHistogram
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo/statistics_builder.go:3637
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*statisticsBuilder).applyIndexConstraint.func1
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo/statistics_builder.go:3401
| github.com/cockroachdb/cockroach/pkg/sql/opt.ColSet.ForEach.func1
| github.com/cockroachdb/cockroach/pkg/sql/opt/colset.go:83
| github.com/cockroachdb/cockroach/pkg/util/intsets.Fast.ForEach
| github.com/cockroachdb/cockroach/pkg/util/intsets/fast.go:154
| github.com/cockroachdb/cockroach/pkg/sql/opt.ColSet.ForEach
| github.com/cockroachdb/cockroach/pkg/sql/opt/colset.go:83
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*statisticsBuilder).applyIndexConstraint
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo/statistics_builder.go:3399
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*statisticsBuilder).constrainScan
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo/statistics_builder.go:948
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*statisticsBuilder).buildScan
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo/statistics_builder.go:859
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*logicalPropsBuilder).buildScanProps
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo/logical_props_builder.go:186
| github.com/cockroachdb/cockroach/pkg/sql/opt/memo.(*Memo).MemoizeScan
| github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/opt/memo/expr.og.go:20146
| github.com/cockroachdb/cockroach/pkg/sql/opt/norm.(*Factory).ConstructScan
| github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go:456
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*indexScanBuilder).Build
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/index_scan_builder.go:249
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*CustomFuncs).GenerateConstrainedScans.func1
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/select_funcs.go:505
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*scanIndexIter).ForEachStartingAfter
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/scan_index_iter.go:305
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*scanIndexIter).ForEach
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/scan_index_iter.go:208
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*CustomFuncs).GenerateConstrainedScans
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/select_funcs.go:441
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*explorer).exploreSelect
| github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/opt/xform/explorer.og.go:259
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*explorer).exploreGroupMember
| github.com/cockroachdb/cockroach/bazel-out/k8-opt/bin/pkg/sql/opt/xform/explorer.og.go:24
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*explorer).exploreGroup
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/explorer.go:185
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).optimizeGroup
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:536
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).optimizeEnforcer
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:717
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).enforceProps
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:668
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).optimizeGroupMember
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:563
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).optimizeGroup
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:523
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).Optimize
| github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:269
| github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).reuseMemo
| github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:507
| github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildExecMemo
| github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:537
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan
| github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:240
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).makeExecPlan
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2028
Wraps: (3) span must be fully contained in the bucket
Error types: (1) *assert.withAssertionFailure (2) *withstack.withStack (3) *errutil.leafError
-- report composition:
*errutil.leafError: span must be fully contained in the bucket
histogram.go:694: *withstack.withStack (top exception)
*assert.withAssertionFailure
Stacktrace (expand for inline code snippets):
https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/conn_executor_exec.go#L2027-L2029 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/plan_opt.go#L239-L241 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/plan_opt.go#L536-L538 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/plan_opt.go#L506-L508 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/optimizer.go#L268-L270 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/optimizer.go#L522-L524 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/optimizer.go#L562-L564 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/optimizer.go#L667-L669 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/optimizer.go#L716-L718 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/optimizer.go#L535-L537 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/explorer.go#L184-L186 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/bazel-out/k8-opt/bin/pkg/sql/opt/xform/explorer.og.go#L23-L25 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/bazel-out/k8-opt/bin/pkg/sql/opt/xform/explorer.og.go#L258-L260 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/select_funcs.go#L440-L442 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/scan_index_iter.go#L207-L209 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/scan_index_iter.go#L304-L306 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/select_funcs.go#L504-L506 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/xform/index_scan_builder.go#L248-L250 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go#L455-L457 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/bazel-out/k8-opt/bin/pkg/sql/opt/memo/expr.og.go#L20145-L20147 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/memo/logical_props_builder.go#L185-L187 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/memo/statistics_builder.go#L858-L860 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/memo/statistics_builder.go#L947-L949 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/memo/statistics_builder.go#L3398-L3400 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/colset.go#L82-L84 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/util/intsets/fast.go#L153-L155 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/colset.go#L82-L84 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/memo/statistics_builder.go#L3400-L3402 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/memo/statistics_builder.go#L3636-L3638 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/props/histogram.go#L406-L408 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/props/histogram.go#L340-L342 https://github.com/cockroachdb/cockroach/blob/d7e9824b4cd6ebf7a8548156f2a772ae6648257d/pkg/sql/opt/props/histogram.go#L693-L695
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).makeExecPlan at line 2028
pkg/sql/plan_opt.go in pkg/sql.(*planner).makeOptimizerPlan at line 240
pkg/sql/plan_opt.go in pkg/sql.(*optPlanningCtx).buildExecMemo at line 537
pkg/sql/plan_opt.go in pkg/sql.(*optPlanningCtx).reuseMemo at line 507
pkg/sql/opt/xform/optimizer.go in pkg/sql/opt/xform.(*Optimizer).Optimize at line 269
pkg/sql/opt/xform/optimizer.go in pkg/sql/opt/xform.(*Optimizer).optimizeGroup at line 523
pkg/sql/opt/xform/optimizer.go in pkg/sql/opt/xform.(*Optimizer).optimizeGroupMember at line 563
pkg/sql/opt/xform/optimizer.go in pkg/sql/opt/xform.(*Optimizer).enforceProps at line 668
pkg/sql/opt/xform/optimizer.go in pkg/sql/opt/xform.(*Optimizer).optimizeEnforcer at line 717
pkg/sql/opt/xform/optimizer.go in pkg/sql/opt/xform.(*Optimizer).optimizeGroup at line 536
pkg/sql/opt/xform/explorer.go in pkg/sql/opt/xform.(*explorer).exploreGroup at line 185
bazel-out/k8-opt/bin/pkg/sql/opt/xform/explorer.og.go in pkg/sql/opt/xform.(*explorer).exploreGroupMember at line 24
bazel-out/k8-opt/bin/pkg/sql/opt/xform/explorer.og.go in pkg/sql/opt/xform.(*explorer).exploreSelect at line 259
pkg/sql/opt/xform/select_funcs.go in pkg/sql/opt/xform.(*CustomFuncs).GenerateConstrainedScans at line 441
pkg/sql/opt/xform/scan_index_iter.go in pkg/sql/opt/xform.(*scanIndexIter).ForEach at line 208
pkg/sql/opt/xform/scan_index_iter.go in pkg/sql/opt/xform.(*scanIndexIter).ForEachStartingAfter at line 305
pkg/sql/opt/xform/select_funcs.go in pkg/sql/opt/xform.(*CustomFuncs).GenerateConstrainedScans.func1 at line 505
pkg/sql/opt/xform/index_scan_builder.go in pkg/sql/opt/xform.(*indexScanBuilder).Build at line 249
bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go in pkg/sql/opt/norm.(*Factory).ConstructScan at line 456
bazel-out/k8-opt/bin/pkg/sql/opt/memo/expr.og.go in pkg/sql/opt/memo.(*Memo).MemoizeScan at line 20146
pkg/sql/opt/memo/logical_props_builder.go in pkg/sql/opt/memo.(*logicalPropsBuilder).buildScanProps at line 186
pkg/sql/opt/memo/statistics_builder.go in pkg/sql/opt/memo.(*statisticsBuilder).buildScan at line 859
pkg/sql/opt/memo/statistics_builder.go in pkg/sql/opt/memo.(*statisticsBuilder).constrainScan at line 948
pkg/sql/opt/memo/statistics_builder.go in pkg/sql/opt/memo.(*statisticsBuilder).applyIndexConstraint at line 3399
pkg/sql/opt/colset.go in pkg/sql/opt.ColSet.ForEach at line 83
pkg/util/intsets/fast.go in pkg/util/intsets.Fast.ForEach at line 154
pkg/sql/opt/colset.go in pkg/sql/opt.ColSet.ForEach.func1 at line 83
pkg/sql/opt/memo/statistics_builder.go in pkg/sql/opt/memo.(*statisticsBuilder).applyIndexConstraint.func1 at line 3401
pkg/sql/opt/memo/statistics_builder.go in pkg/sql/opt/memo.(*statisticsBuilder).updateHistogram at line 3637
pkg/sql/opt/props/histogram.go in pkg/sql/opt/props.(*Histogram).Filter at line 407
pkg/sql/opt/props/histogram.go in pkg/sql/opt/props.(*Histogram).filter at line 341
pkg/sql/opt/props/histogram.go in pkg/sql/opt/props.getFilteredBucket at line 694
Tags
| Tag | Value |
|---|---|
| Command | server |
| Environment | v23.1.12 |
| Go Version | go1.19.13 |
| Platform | linux amd64 |
| Distribution | CCL |
| Cockroach Release | v23.1.12 |
| Cockroach SHA | d7e9824b4cd6ebf7a8548156f2a772ae6648257d |
| # of CPUs | 16 |
| # of Goroutines | 6176 |
Jira issue: CRDB-38748
dup of https://github.com/cockroachlabs/support/issues/2952
I'm going to re-open this to use it as the public tracking issue.
Here's how to reproduce the problem:
- Start a multi-region demo cluster:
./cockroach demo \ --nodes 12 \ --no-example-database \ --insecure \ --multitenant=false \ --demo-locality=\ cloud=aws,region=ap-northeast-2,zone=ap-northeast-2b,pg=ap-northeast-2b1:\ cloud=aws,region=ap-northeast-2,zone=ap-northeast-2a,pg=ap-northeast-2a1:\ cloud=aws,region=ap-northeast-2,zone=ap-northeast-2c,pg=ap-northeast-2c1:\ cloud=aws,region=eu-west-1,zone=eu-west-1b,pg=eu-west-1b1:\ cloud=aws,region=eu-west-1,zone=eu-west-1a,pg=eu-west-1a1:\ cloud=aws,region=us-east-1,zone=us-east-1c,pg=us-east-1c1:\ cloud=aws,region=eu-central-1,zone=eu-central-1b,pg=eu-central-1b1:\ cloud=aws,region=eu-central-1,zone=eu-central-1a,pg=eu-central-1a1:\ cloud=aws,region=eu-central-1,zone=eu-central-1c,pg=eu-central-1c1:\ cloud=aws,region=us-east-1,zone=us-east-1a,pg=us-east-1a1:\ cloud=aws,region=us-east-1,zone=us-east-1b,pg=us-east-1b2:\ cloud=aws,region=eu-west-1,zone=eu-west-1c,pg=eu-west-1c2 - Turn off autostats:
SET CLUSTER SETTING sql.stats.automatic_collection.enabled = off; - Create this REGIONAL BY ROW table:
CREATE DATABASE db PRIMARY REGION "us-east-1" REGIONS = "ap-northeast-2", "eu-west-1", "us-east-1" SURVIVE REGION FAILURE; USE db; CREATE TABLE t ( region crdb_internal_region NOT NULL, id UUID NOT NULL DEFAULT gen_random_uuid(), a INT NOT NULL, PRIMARY KEY (id), UNIQUE INDEX (a) ) LOCALITY REGIONAL BY ROW AS region; INSERT INTO t (region, a) VALUES ('ap-northeast-2', 0), ('eu-west-1', 1), ('us-east-1', 2); ANALYZE t; - Add another region to the database:
ALTER DATABASE db ADD REGION "eu-central-1"; - Now this statement will fail with an internal error:
INSERT INTO t (region, a) VALUES ('eu-west-1', 3);
This is related to https://github.com/cockroachdb/cockroach/issues/67050.