Can't truncate tables in CI database with Rake task
I tried to truncate my tables in the CI database to make !102843 (merged) work via:
bin/rake gitlab:db:lock_writes
bin/rake gitlab:db:truncate_legacy_tables:main
bin/rake gitlab:db:truncate_legacy_tables:ci
bin/rake gitlab:db:unlock_writes
But I got:
I, [2022-11-09T15:31:55.416593 #48877] INFO -- : TRUNCATE TABLE abuse_reports, agent_activity_events, agent_group_authorizations, agent_project_authorizations, alert_management_alert_assignees, alert_management_alert_metric_images, alert_management_alert_user_mentions, alert_management_alerts, alert_management_http_integrations, incident_management_pending_alert_escalations RESTRICT
rake aborted!
ActiveRecord::StatementInvalid: PG::FeatureNotSupported: ERROR: cannot truncate a table referenced in a foreign key constraint
DETAIL: Table "incident_management_pending_alert_escalations_202208" references "alert_management_alerts".
HINT: Truncate table "incident_management_pending_alert_escalations_202208" at the same time, or use TRUNCATE ... CASCADE.
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/load_balancer.rb:122:in `block in read_write'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/load_balancer.rb:193:in `retry_with_backoff'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/load_balancer.rb:118:in `read_write'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:89:in `method_missing'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:90:in `block (3 levels) in truncate_tables_in_batches'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:90:in `each'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:90:in `block (2 levels) in truncate_tables_in_batches'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/load_balancer.rb:122:in `block in read_write'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/load_balancer.rb:193:in `retry_with_backoff'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/load_balancer.rb:118:in `read_write'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `transaction'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:89:in `block in truncate_tables_in_batches'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:75:in `each'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:75:in `truncate_tables_in_batches'
/Users/stanhu/gdk-ee/gitlab/lib/gitlab/database/tables_truncate.rb:54:in `execute'
/Users/stanhu/gdk-ee/gitlab/lib/tasks/gitlab/db/truncate_legacy_tables.rake:27:in `block (4 levels) in <main>'
Is it possible we're not considering the gitlab_partitions_dynamic
schema?
gitlabhq_development_ci=# \d+ gitlab_partitions_dynamic.incident_management_pending_alert_escalations_202208;
Table "gitlab_partitions_dynamic.incident_management_pending_alert_escalations_202208"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
------------+--------------------------+-----------+----------+---------------------------------------------------------------------------+---------+--------------+-------------
id | bigint | | not null | nextval('incident_management_pending_alert_escalations_id_seq'::regclass) | plain | |
rule_id | bigint | | not null | | plain | |
alert_id | bigint | | not null | | plain | |
process_at | timestamp with time zone | | not null | | plain | |
created_at | timestamp with time zone | | not null | | plain | |
updated_at | timestamp with time zone | | not null | | plain | |
Indexes:
"incident_management_pending_alert_escalations_202208_pkey" PRIMARY KEY, btree (id, process_at)
"incident_management_pending_alert_escalations_2022_rule_id_idx7" btree (rule_id)
"incident_management_pending_alert_escalations_202_alert_id_idx7" btree (alert_id)
Foreign-key constraints:
"fk_rails_8d8de95da9" FOREIGN KEY (alert_id) REFERENCES alert_management_alerts(id) ON DELETE CASCADE
"fk_rails_f3d17bc8af" FOREIGN KEY (rule_id) REFERENCES incident_management_escalation_rules(id) ON DELETE CASCADE
Access method: heap