Skip to content

Commit 790147a

Browse files
authored
Merge pull request #151223 from cockroachdb/blathers/backport-release-24.3-151185
release-24.3: cli: explicitly set disallow_full_table_scans for debug.zips
2 parents 6c3f184 + 0f8518d commit 790147a

File tree

3 files changed

+180
-0
lines changed

3 files changed

+180
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
zip
2+
----
3+
debug zip --concurrency=1 --cpu-profile-duration=0 /dev/null
4+
[cluster] discovering virtual clusters... done
5+
[cluster] creating output file /dev/null... done
6+
[cluster] establishing RPC connection to ...
7+
[cluster] using SQL address: ...
8+
[cluster] requesting data for debug/events... received response... writing JSON output: debug/events.json... done
9+
[cluster] requesting data for debug/rangelog... received response... writing JSON output: debug/rangelog.json... done
10+
[cluster] requesting data for debug/settings... received response... writing JSON output: debug/settings.json... done
11+
[cluster] requesting data for debug/reports/problemranges... received response... writing JSON output: debug/reports/problemranges.json... done
12+
[cluster] retrieving SQL data for "".crdb_internal.cluster_replication_spans... writing output: debug/crdb_internal.cluster_replication_spans.txt... done
13+
[cluster] retrieving SQL data for "".crdb_internal.create_function_statements... writing output: debug/crdb_internal.create_function_statements.txt... done
14+
[cluster] retrieving SQL data for "".crdb_internal.create_procedure_statements... writing output: debug/crdb_internal.create_procedure_statements.txt... done
15+
[cluster] retrieving SQL data for "".crdb_internal.create_schema_statements... writing output: debug/crdb_internal.create_schema_statements.txt... done
16+
[cluster] retrieving SQL data for "".crdb_internal.create_statements... writing output: debug/crdb_internal.create_statements.txt... done
17+
[cluster] retrieving SQL data for "".crdb_internal.create_type_statements... writing output: debug/crdb_internal.create_type_statements.txt... done
18+
[cluster] retrieving SQL data for crdb_internal.cluster_contention_events... writing output: debug/crdb_internal.cluster_contention_events.txt... done
19+
[cluster] retrieving SQL data for crdb_internal.cluster_database_privileges... writing output: debug/crdb_internal.cluster_database_privileges.txt... done
20+
[cluster] retrieving SQL data for crdb_internal.cluster_distsql_flows... writing output: debug/crdb_internal.cluster_distsql_flows.txt... done
21+
[cluster] retrieving SQL data for crdb_internal.cluster_locks... writing output: debug/crdb_internal.cluster_locks.txt... done
22+
[cluster] retrieving SQL data for crdb_internal.cluster_queries... writing output: debug/crdb_internal.cluster_queries.txt... done
23+
[cluster] retrieving SQL data for crdb_internal.cluster_sessions... writing output: debug/crdb_internal.cluster_sessions.txt... done
24+
[cluster] retrieving SQL data for crdb_internal.cluster_settings... writing output: debug/crdb_internal.cluster_settings.txt... done
25+
[cluster] retrieving SQL data for crdb_internal.cluster_transactions... writing output: debug/crdb_internal.cluster_transactions.txt... done
26+
[cluster] retrieving SQL data for crdb_internal.default_privileges... writing output: debug/crdb_internal.default_privileges.txt... done
27+
[cluster] retrieving SQL data for crdb_internal.index_usage_statistics... writing output: debug/crdb_internal.index_usage_statistics.txt... done
28+
[cluster] retrieving SQL data for crdb_internal.invalid_objects... writing output: debug/crdb_internal.invalid_objects.txt... done
29+
[cluster] retrieving SQL data for crdb_internal.jobs... writing output: debug/crdb_internal.jobs.txt... done
30+
[cluster] retrieving SQL data for crdb_internal.kv_node_liveness... writing output: debug/crdb_internal.kv_node_liveness.txt... done
31+
[cluster] retrieving SQL data for crdb_internal.kv_node_status... writing output: debug/crdb_internal.kv_node_status.txt... done
32+
[cluster] retrieving SQL data for crdb_internal.kv_protected_ts_records... writing output: debug/crdb_internal.kv_protected_ts_records.txt... done
33+
[cluster] retrieving SQL data for crdb_internal.kv_store_status... writing output: debug/crdb_internal.kv_store_status.txt... done
34+
[cluster] retrieving SQL data for crdb_internal.kv_system_privileges... writing output: debug/crdb_internal.kv_system_privileges.txt... done
35+
[cluster] retrieving SQL data for crdb_internal.partitions... writing output: debug/crdb_internal.partitions.txt... done
36+
[cluster] retrieving SQL data for crdb_internal.probe_ranges_1s_read_limit_100... writing output: debug/crdb_internal.probe_ranges_1s_read_limit_100.txt... done
37+
[cluster] retrieving SQL data for crdb_internal.regions... writing output: debug/crdb_internal.regions.txt... done
38+
[cluster] retrieving SQL data for crdb_internal.schema_changes... writing output: debug/crdb_internal.schema_changes.txt... done
39+
[cluster] retrieving SQL data for crdb_internal.super_regions... writing output: debug/crdb_internal.super_regions.txt... done
40+
[cluster] retrieving SQL data for crdb_internal.system_jobs... writing output: debug/crdb_internal.system_jobs.txt... done
41+
[cluster] retrieving SQL data for crdb_internal.table_indexes... writing output: debug/crdb_internal.table_indexes.txt... done
42+
[cluster] retrieving SQL data for crdb_internal.transaction_contention_events... writing output: debug/crdb_internal.transaction_contention_events.txt... done
43+
[cluster] retrieving SQL data for crdb_internal.zones... writing output: debug/crdb_internal.zones.txt... done
44+
[cluster] retrieving SQL data for system.database_role_settings... writing output: debug/system.database_role_settings.txt... done
45+
[cluster] retrieving SQL data for system.descriptor... writing output: debug/system.descriptor.txt... done
46+
[cluster] retrieving SQL data for system.eventlog... writing output: debug/system.eventlog.txt... done
47+
[cluster] retrieving SQL data for system.external_connections... writing output: debug/system.external_connections.txt... done
48+
[cluster] retrieving SQL data for system.job_info... writing output: debug/system.job_info.txt... done
49+
[cluster] retrieving SQL data for system.jobs... writing output: debug/system.jobs.txt... done
50+
[cluster] retrieving SQL data for system.lease... writing output: debug/system.lease.txt... done
51+
[cluster] retrieving SQL data for system.locations... writing output: debug/system.locations.txt... done
52+
[cluster] retrieving SQL data for system.migrations... writing output: debug/system.migrations.txt... done
53+
[cluster] retrieving SQL data for system.namespace... writing output: debug/system.namespace.txt... done
54+
[cluster] retrieving SQL data for system.privileges... writing output: debug/system.privileges.txt... done
55+
[cluster] retrieving SQL data for system.protected_ts_meta... writing output: debug/system.protected_ts_meta.txt... done
56+
[cluster] retrieving SQL data for system.protected_ts_records... writing output: debug/system.protected_ts_records.txt... done
57+
[cluster] retrieving SQL data for system.rangelog... writing output: debug/system.rangelog.txt... done
58+
[cluster] retrieving SQL data for system.replication_constraint_stats... writing output: debug/system.replication_constraint_stats.txt... done
59+
[cluster] retrieving SQL data for system.replication_critical_localities... writing output: debug/system.replication_critical_localities.txt... done
60+
[cluster] retrieving SQL data for system.replication_stats... writing output: debug/system.replication_stats.txt... done
61+
[cluster] retrieving SQL data for system.reports_meta... writing output: debug/system.reports_meta.txt... done
62+
[cluster] retrieving SQL data for system.role_id_seq... writing output: debug/system.role_id_seq.txt... done
63+
[cluster] retrieving SQL data for system.role_members... writing output: debug/system.role_members.txt... done
64+
[cluster] retrieving SQL data for system.role_options... writing output: debug/system.role_options.txt... done
65+
[cluster] retrieving SQL data for system.scheduled_jobs... writing output: debug/system.scheduled_jobs.txt... done
66+
[cluster] retrieving SQL data for system.settings... writing output: debug/system.settings.txt... done
67+
[cluster] retrieving SQL data for system.span_configurations... writing output: debug/system.span_configurations.txt... done
68+
[cluster] retrieving SQL data for system.sql_instances... writing output: debug/system.sql_instances.txt... done
69+
[cluster] retrieving SQL data for system.sql_stats_cardinality... writing output: debug/system.sql_stats_cardinality.txt... done
70+
[cluster] retrieving SQL data for system.sqlliveness... writing output: debug/system.sqlliveness.txt... done
71+
[cluster] retrieving SQL data for system.statement_diagnostics... writing output: debug/system.statement_diagnostics.txt... done
72+
[cluster] retrieving SQL data for system.statement_diagnostics_requests... writing output: debug/system.statement_diagnostics_requests.txt... done
73+
[cluster] retrieving SQL data for system.statement_statistics_limit_5000... writing output: debug/system.statement_statistics_limit_5000.txt... done
74+
[cluster] retrieving SQL data for system.table_statistics... writing output: debug/system.table_statistics.txt... done
75+
[cluster] retrieving SQL data for system.task_payloads... writing output: debug/system.task_payloads.txt... done
76+
[cluster] retrieving SQL data for system.tenant_settings... writing output: debug/system.tenant_settings.txt... done
77+
[cluster] retrieving SQL data for system.tenant_tasks... writing output: debug/system.tenant_tasks.txt... done
78+
[cluster] retrieving SQL data for system.tenant_usage... writing output: debug/system.tenant_usage.txt... done
79+
[cluster] retrieving SQL data for system.tenants... writing output: debug/system.tenants.txt... done
80+
[cluster] retrieving SQL data for system.zones... writing output: debug/system.zones.txt... done
81+
[cluster] requesting nodes... received response... writing JSON output: debug/nodes.json... done
82+
[cluster] requesting liveness... received response... writing JSON output: debug/liveness.json... done
83+
[cluster] requesting tenant ranges... received response...
84+
[cluster] requesting tenant ranges: last request failed: rpc error: ...
85+
[cluster] requesting tenant ranges: creating error output: debug/tenant_ranges.err.txt... done
86+
[cluster] collecting the inflight traces for jobs... received response... done
87+
[node 1] node status... writing JSON output: debug/nodes/1/status.json... done
88+
[node 1] using SQL connection URL: postgresql://...
89+
[node 1] retrieving SQL data for crdb_internal.active_range_feeds... writing output: debug/nodes/1/crdb_internal.active_range_feeds.txt... done
90+
[node 1] retrieving SQL data for crdb_internal.cluster_replication_node_stream_checkpoints... writing output: debug/nodes/1/crdb_internal.cluster_replication_node_stream_checkpoints.txt... done
91+
[node 1] retrieving SQL data for crdb_internal.cluster_replication_node_stream_spans... writing output: debug/nodes/1/crdb_internal.cluster_replication_node_stream_spans.txt... done
92+
[node 1] retrieving SQL data for crdb_internal.cluster_replication_node_streams... writing output: debug/nodes/1/crdb_internal.cluster_replication_node_streams.txt... done
93+
[node 1] retrieving SQL data for crdb_internal.feature_usage... writing output: debug/nodes/1/crdb_internal.feature_usage.txt... done
94+
[node 1] retrieving SQL data for crdb_internal.gossip_alerts... writing output: debug/nodes/1/crdb_internal.gossip_alerts.txt... done
95+
[node 1] retrieving SQL data for crdb_internal.gossip_liveness... writing output: debug/nodes/1/crdb_internal.gossip_liveness.txt... done
96+
[node 1] retrieving SQL data for crdb_internal.gossip_nodes... writing output: debug/nodes/1/crdb_internal.gossip_nodes.txt... done
97+
[node 1] retrieving SQL data for crdb_internal.kv_session_based_leases... writing output: debug/nodes/1/crdb_internal.kv_session_based_leases.txt... done
98+
[node 1] retrieving SQL data for crdb_internal.leases... writing output: debug/nodes/1/crdb_internal.leases.txt... done
99+
[node 1] retrieving SQL data for crdb_internal.logical_replication_node_processors... writing output: debug/nodes/1/crdb_internal.logical_replication_node_processors.txt... done
100+
[node 1] retrieving SQL data for crdb_internal.node_build_info... writing output: debug/nodes/1/crdb_internal.node_build_info.txt... done
101+
[node 1] retrieving SQL data for crdb_internal.node_contention_events... writing output: debug/nodes/1/crdb_internal.node_contention_events.txt... done
102+
[node 1] retrieving SQL data for crdb_internal.node_distsql_flows... writing output: debug/nodes/1/crdb_internal.node_distsql_flows.txt... done
103+
[node 1] retrieving SQL data for crdb_internal.node_execution_insights... writing output: debug/nodes/1/crdb_internal.node_execution_insights.txt... done
104+
[node 1] retrieving SQL data for crdb_internal.node_inflight_trace_spans... writing output: debug/nodes/1/crdb_internal.node_inflight_trace_spans.txt... done
105+
[node 1] retrieving SQL data for crdb_internal.node_memory_monitors... writing output: debug/nodes/1/crdb_internal.node_memory_monitors.txt... done
106+
[node 1] retrieving SQL data for crdb_internal.node_metrics... writing output: debug/nodes/1/crdb_internal.node_metrics.txt... done
107+
[node 1] retrieving SQL data for crdb_internal.node_queries... writing output: debug/nodes/1/crdb_internal.node_queries.txt... done
108+
[node 1] retrieving SQL data for crdb_internal.node_runtime_info... writing output: debug/nodes/1/crdb_internal.node_runtime_info.txt... done
109+
[node 1] retrieving SQL data for crdb_internal.node_sessions... writing output: debug/nodes/1/crdb_internal.node_sessions.txt... done
110+
[node 1] retrieving SQL data for crdb_internal.node_statement_statistics... writing output: debug/nodes/1/crdb_internal.node_statement_statistics.txt... done
111+
[node 1] retrieving SQL data for crdb_internal.node_tenant_capabilities_cache... writing output: debug/nodes/1/crdb_internal.node_tenant_capabilities_cache.txt... done
112+
[node 1] retrieving SQL data for crdb_internal.node_transaction_statistics... writing output: debug/nodes/1/crdb_internal.node_transaction_statistics.txt... done
113+
[node 1] retrieving SQL data for crdb_internal.node_transactions... writing output: debug/nodes/1/crdb_internal.node_transactions.txt... done
114+
[node 1] retrieving SQL data for crdb_internal.node_txn_execution_insights... writing output: debug/nodes/1/crdb_internal.node_txn_execution_insights.txt... done
115+
[node 1] retrieving SQL data for crdb_internal.node_txn_stats... writing output: debug/nodes/1/crdb_internal.node_txn_stats.txt... done
116+
[node 1] requesting data for debug/nodes/1/details... received response... writing JSON output: debug/nodes/1/details.json... done
117+
[node 1] requesting data for debug/nodes/1/gossip... received response... writing JSON output: debug/nodes/1/gossip.json... done
118+
[node 1] requesting stacks... received response... writing binary output: debug/nodes/1/stacks.txt... done
119+
[node 1] requesting stacks with labels... received response... writing binary output: debug/nodes/1/stacks_with_labels.txt... done
120+
[node 1] requesting heap profile... received response... writing binary output: debug/nodes/1/heap.pprof... done
121+
[node 1] requesting engine stats... received response... writing binary output: debug/nodes/1/lsm.txt... done
122+
[node 1] requesting heap profile list... received response... done
123+
[node ?] ? heap profiles found
124+
[node 1] requesting goroutine dump list... received response... done
125+
[node ?] ? goroutine dumps found
126+
[node 1] requesting cpu profile list... received response... done
127+
[node ?] ? cpu profiles found
128+
[node 1] requesting log files list... received response... done
129+
[node ?] ? log files found
130+
[node 1] requesting ranges... received response... done
131+
[node 1] writing ranges... writing JSON output: debug/nodes/1/ranges.json... done
132+
[cluster] pprof summary script... writing binary output: debug/pprof-summary.sh... done
133+
[cluster] hot range summary script... writing binary output: debug/hot-ranges.sh... done
134+
[cluster] tenant hot range summary script... writing binary output: debug/hot-ranges-tenant.sh... done
135+
[cluster] capture debug zip flags... writing binary output: debug/debug_zip_command_flags.txt... done

pkg/cli/zip.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,12 @@ func (zc *debugZipContext) dumpTableDataForZip(
555555
return err
556556
}
557557

558+
// Many of the table data queries use full scans, so allow them.
559+
err = conn.Exec(ctx, `SET disallow_full_table_scans = off`)
560+
if err != nil {
561+
return err
562+
}
563+
558564
w, err := zc.z.createLocked(name, time.Time{})
559565
if err != nil {
560566
return err

pkg/cli/zip_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,45 @@ func TestPartialZip(t *testing.T) {
800800
})
801801
}
802802

803+
// TestZipDisallowFullScans tests that we still can dump full SQL tables for
804+
// debug.zips when the cluster has disallow_full_table_scans enabled.
805+
func TestZipDisallowFullScans(t *testing.T) {
806+
defer leaktest.AfterTest(t)()
807+
defer log.Scope(t).Close(t)
808+
809+
skip.UnderShort(t)
810+
skip.UnderRace(t)
811+
812+
dir, cleanupFn := testutils.TempDir(t)
813+
defer cleanupFn()
814+
815+
c := NewCLITest(TestCLIParams{
816+
StoreSpecs: []base.StoreSpec{{
817+
Path: dir,
818+
}},
819+
})
820+
defer c.Cleanup()
821+
822+
c.RunWithArgs([]string{"sql", "-e", `
823+
SET CLUSTER SETTING sql.defaults.disallow_full_table_scans.enabled = on;
824+
SET CLUSTER SETTING sql.defaults.large_full_scan_rows = 1;
825+
`})
826+
827+
out, err := c.RunWithCapture("debug zip --concurrency=1 --cpu-profile-duration=0 " + os.DevNull)
828+
if err != nil {
829+
t.Fatal(err)
830+
}
831+
832+
// Strip any non-deterministic messages.
833+
out = eraseNonDeterministicZipOutput(out)
834+
835+
// We use datadriven simply to read the golden output file; we don't actually
836+
// run any commands. Using datadriven allows TESTFLAGS=-rewrite.
837+
datadriven.RunTest(t, datapathutils.TestDataPath(t, "zip", "testzip_disallow_full_scans"), func(t *testing.T, td *datadriven.TestData) string {
838+
return out
839+
})
840+
}
841+
803842
// This checks that SQL retry errors are properly handled.
804843
func TestZipRetries(t *testing.T) {
805844
defer leaktest.AfterTest(t)()

0 commit comments

Comments
 (0)