Skip to content

Upgrade to 13.3 and database migration fail

First of all, I had also a issue upgrading to 13.2 (related to #5540 (closed))

I solved this issue with DROP SCHEMA gitlab_partitions_dynamic; unfortunately I have now a problem with upgrading to 13.3

== 20200716120000 PartitionAuditEvents: migrating =============================
-- transaction_open?()
   -> 0.0000s
-- table_exists?("audit_events_part_5fc467ac26")
   -> 0.0004s
-- table_exists?("gitlab_partitions_dynamic.audit_events_part_5fc467ac26_000000")
   -> 0.0004s
-- execute("CREATE TABLE gitlab_partitions_dynamic.audit_events_part_5fc467ac26_000000 PARTITION OF audit_events_part_5fc467ac26\nFOR VALUES FROM (MINVALUE) TO ('2017-08-01')\n")
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::InvalidSchemaName: ERROR:  schema "gitlab_partitions_dynamic" does not exist
LINE 1: CREATE TABLE gitlab_partitions_dynamic.audit_events_part_5fc...
                     ^
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_helpers.rb:92:in `create_range_partition'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:225:in `create_range_partition_safely'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:199:in `create_daterange_partitions'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:59:in `partition_table_by_date'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20200716120000_partition_audit_events.rb:13:in `up'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'

Caused by:
ActiveRecord::StatementInvalid: PG::InvalidSchemaName: ERROR:  schema "gitlab_partitions_dynamic" does not exist
LINE 1: CREATE TABLE gitlab_partitions_dynamic.audit_events_part_5fc...
                     ^
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_helpers.rb:92:in `create_range_partition'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:225:in `create_range_partition_safely'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:199:in `create_daterange_partitions'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:59:in `partition_table_by_date'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20200716120000_partition_audit_events.rb:13:in `up'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'

Caused by:
PG::InvalidSchemaName: ERROR:  schema "gitlab_partitions_dynamic" does not exist
LINE 1: CREATE TABLE gitlab_partitions_dynamic.audit_events_part_5fc...
                     ^
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_helpers.rb:92:in `create_range_partition'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:225:in `create_range_partition_safely'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:199:in `create_daterange_partitions'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:59:in `partition_table_by_date'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20200716120000_partition_audit_events.rb:13:in `up'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

After that I recreated the schema and got following error:

== 20200716120000 PartitionAuditEvents: migrating =============================
-- transaction_open?()
   -> 0.0000s
-- table_exists?("audit_events_part_5fc467ac26")
   -> 0.0004s
-- table_exists?("gitlab_partitions_dynamic.audit_events_part_5fc467ac26_000000")
   -> 0.0004s
-- table_exists?("gitlab_partitions_dynamic.audit_events_part_5fc467ac26_201708")
   -> 0.0003s
-- execute("CREATE TABLE gitlab_partitions_dynamic.audit_events_part_5fc467ac26_201708 PARTITION OF audit_events_part_5fc467ac26\nFOR VALUES FROM ('2017-08-01') TO ('2017-09-01')\n")
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::InvalidObjectDefinition: ERROR:  partition "audit_events_part_5fc467ac26_201708" would overlap partition "audit_events_part_5fc467ac26_000000"
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_helpers.rb:92:in `create_range_partition'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:225:in `create_range_partition_safely'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:207:in `create_daterange_partitions'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:59:in `partition_table_by_date'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20200716120000_partition_audit_events.rb:13:in `up'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'

Caused by:
ActiveRecord::StatementInvalid: PG::InvalidObjectDefinition: ERROR:  partition "audit_events_part_5fc467ac26_201708" would overlap partition "audit_events_part_5fc467ac26_000000"
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_helpers.rb:92:in `create_range_partition'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:225:in `create_range_partition_safely'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:207:in `create_daterange_partitions'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:59:in `partition_table_by_date'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20200716120000_partition_audit_events.rb:13:in `up'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'

Caused by:
PG::InvalidObjectDefinition: ERROR:  partition "audit_events_part_5fc467ac26_201708" would overlap partition "audit_events_part_5fc467ac26_000000"
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_helpers.rb:92:in `create_range_partition'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:225:in `create_range_partition_safely'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:207:in `create_daterange_partitions'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers.rb:59:in `partition_table_by_date'
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20200716120000_partition_audit_events.rb:13:in `up'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
psql (11.7)
Type "help" for help.

gitlabhq_production=# \dt+ gitlab_partitions_dynamic.*
                                              List of relations
          Schema           |                Name                 | Type  | Owner  |    Size    | Description 
---------------------------+-------------------------------------+-------+--------+------------+-------------
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_000000 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202008 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202009 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202010 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202011 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202012 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202101 | table | gitlab | 8192 bytes | 
 gitlab_partitions_dynamic | audit_events_part_5fc467ac26_202102 | table | gitlab | 8192 bytes | 
(8 rows)

gitlabhq_production=#

any ideas on that?

Edited by Björn Ternes