Migration: PG::UndefinedTable: ERROR: relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
Summary
main: -- execute("ALTER INDEX \"bigint_idx_9e3cffd9404ea9edfaac\" RENAME TO \"temp_234846c0eb\"")
main: == [advisory_lock_connection] object_id: 68660, pg_backend_pid: 568
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
PG::UndefinedTable: ERROR: relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
Steps to reproduce
Upgrade from 18.4.2 to 18.5.1
Example Project
Gitlab in a Docker container
What is the current bug behavior?
Restart loop
What is the expected correct behavior?
Migration succeeds and gitlab starts
Relevant logs and/or screenshots
[2025-10-23T05:38:16+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash_hide_env[migrate gitlab-rails database] (gitlab::database_migrations line 20) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of "bash" ----
STDOUT: Skipping Topology Service health check due to the cell being disabled
Running db:migrate rake task
main: == [advisory_lock_connection] object_id: 68660, pg_backend_pid: 568
main: == 20250912003652 RetrySwapColumnsForMergeRequestDiffsBigintConversion: migrating
main: -- column_exists?("merge_request_diffs", "id_convert_to_bigint")
main: -> 0.1089s
main: -- column_exists?("merge_request_diffs", "merge_request_id_convert_to_bigint")
main: -> 0.0092s
main: -- columns("merge_request_diffs")
main: -> 0.0088s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0027s
main: -- index_exists?("merge_request_diffs", [:id_convert_to_bigint], {:name=>"bigint_idx_d108ffd7b24e5e2f8ab3", :unique=>true, :algorithm=>:concurrently})
main: -> 0.0377s
main: -- Index not created because it already exists (this may be due to an aborted migration or similar): table_name: merge_request_diffs, column_name: [:id_convert_to_bigint]
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("LOCK TABLE merge_request_diffs, merge_request_diff_commits IN SHARE ROW EXCLUSIVE MODE")
main: -> 0.0054s
main: -- execute("ALTER TABLE merge_request_diff_commits ADD CONSTRAINT fk_rails_316aaceda3_tmp FOREIGN KEY (merge_request_diff_id) REFERENCES merge_request_diffs (id_convert_to_bigint) ON DELETE CASCADE NOT VALID;")
main: -> 0.0146s
main: -- execute("SET statement_timeout
main: -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main: -> 0.0000s
main: -- quote_column_name("id_convert_to_bigint")
main: -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n RENAME COLUMN \"temp_name_for_renaming\" TO \"id_convert_to_bigint\"\n")
main: -> 0.0007s
main: -- clear_cache!(nil)
main: -> 0.0000s
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0000s
main: -- quote_column_name(:merge_request_id)
main: -> 0.0001s
main: -- quote_column_name(:temp_name_for_renaming)
main: -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n RENAME COLUMN \"merge_request_id\" TO \"temp_name_for_renaming\"\n")
main: -> 0.0006s
main: -- clear_cache!(nil)
main: -> 0.0000s
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0000s
main: -- quote_column_name("merge_request_id_convert_to_bigint")
main: -> 0.0000s
main: -- quote_column_name(:merge_request_id)
main: -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n RENAME COLUMN \"merge_request_id_convert_to_bigint\" TO \"merge_request_id\"\n")
main: -> 0.0008s
main: -- clear_cache!(nil)
main: -> 0.0000s
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0000s
main: -- quote_column_name(:temp_name_for_renaming)
main: -> 0.0000s
main: -- quote_column_name("merge_request_id_convert_to_bigint")
main: -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\"\n RENAME COLUMN \"temp_name_for_renaming\" TO \"merge_request_id_convert_to_bigint\"\n")
main: -> 0.0007s
main: -- current_schema(nil)
main: -> 0.0010s
main: -- quote_table_name("public")
main: -> 0.0001s
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0001s
main: -- select_all("SELECT DISTINCT\n p.proname AS function_name\nFROM pg_trigger tr\nJOIN pg_proc p ON tr.tgfoid = p.oid\nWHERE tr.tgisinternal IS FALSE\n AND tr.tgrelid = '\"public\".\"merge_request_diffs\"'::regclass\n")
main: -> 0.0058s
main: -- quote_table_name("insert_into_loose_foreign_keys_deleted_records")
main: -> 0.0001s
main: -- execute("ALTER FUNCTION \"insert_into_loose_foreign_keys_deleted_records\" RESET ALL")
main: -> 0.0011s
main: -- quote_table_name("trigger_0abe9dd65fd0")
main: -> 0.0001s
main: -- execute("ALTER FUNCTION \"trigger_0abe9dd65fd0\" RESET ALL")
main: -> 0.0019s
main: -- columns("merge_request_diffs")
main: -> 0.0081s
main: -- columns("merge_request_diffs")
main: -> 0.0038s
main: -- quote_table_name("
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0000s
main: -- quote_column_name(:id)
main: -> 0.0000s
main: -- execute("ALTER SEQUENCE \"merge_request_diffs_id_seq\" OWNED BY \"merge_request_diffs\".\"id\"")
main: -> 0.0023s
main: -- change_column_default("merge_request_diffs", :id_convert_to_bigint, "0")
main: -> 0.0156s
main: -- change_column_default("merge_request_diffs", :id, #<Proc:0x00007993a3832a88 /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/swap_columns_default.rb:46 (lambda)>)
main: -> 0.0143s
main: -- columns("merge_request_diffs")
main: -> 0.0105s
main: -- columns("merge_request_diffs")
main: -> 0.0112s
main: -- change_column_default("merge_request_diffs", :merge_request_id_convert_to_bigint, "0")
main: -> 0.0101s
main: -- change_column_default("merge_request_diffs", :merge_request_id, nil)
main: -> 0.0096s
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0000s
main: -- quote_column_name("merge_request_diffs_pkey")
main: -> 0.0001s
main: -- execute("ALTER TABLE \"merge_request_diffs\" DROP CONSTRAINT \"merge_request_diffs_pkey\" CASCADE\n")
main: -> 0.0035s
main: -- rename_index("merge_request_diffs", "bigint_idx_d108ffd7b24e5e2f8ab3", "merge_request_diffs_pkey")
main: -> 0.0023s
main: -- quote_table_name("merge_request_diffs")
main: -> 0.0000s
main: -- quote_table_name("merge_request_diffs_pkey")
main: -> 0.0000s
main: -- quote_table_name("merge_request_diffs_pkey")
main: -> 0.0000s
main: -- execute("ALTER TABLE \"merge_request_diffs\" ADD CONSTRAINT \"merge_request_diffs_pkey\" PRIMARY KEY USING INDEX \"merge_request_diffs_pkey\"\n")
main: -> 0.0034s
main: -- quote_table_name("bigint_idx_9e3cffd9404ea9edfaac")
main: -> 0.0001s
main: -- quote_table_name("temp_234846c0eb")
main: -> 0.0000s
main: -- execute("ALTER INDEX \"bigint_idx_9e3cffd9404ea9edfaac\" RENAME TO \"temp_234846c0eb\"")
main: == [advisory_lock_connection] object_id: 68660, pg_backend_pid: 568
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
PG::UndefinedTable: ERROR: relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:221:in `rename_index_with_schema'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/swapping.rb:42:in `swap_indexes'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:174:in `block (2 levels) in swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `each'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `block in swap'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:123:in `run_block'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:134:in `block in run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:97:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retries_helpers.rb:52:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:101:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:153:in `swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:97:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:33:in `block in exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/query_analyzer.rb:83:in `within'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:30:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables.rb:21:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/require_disable_ddl_transaction_for_multiple_locks.rb:40:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:46:in `ddl_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/runner_backoff/active_record_mixin.rb:21:in `execute_migration_in_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:14:in `with_advisory_lock'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:191:in `configure_database'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:158:in `configure_pg_databases'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:102:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Caused by:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:221:in `rename_index_with_schema'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/swapping.rb:42:in `swap_indexes'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:174:in `block (2 levels) in swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `each'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `block in swap'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:123:in `run_block'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:134:in `block in run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:97:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retries_helpers.rb:52:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:101:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:153:in `swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:97:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:33:in `block in exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/query_analyzer.rb:83:in `within'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:30:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables.rb:21:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/require_disable_ddl_transaction_for_multiple_locks.rb:40:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:46:in `ddl_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/runner_backoff/active_record_mixin.rb:21:in `execute_migration_in_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:14:in `with_advisory_lock'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:191:in `configure_database'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:158:in `configure_pg_databases'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:102:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Caused by:
PG::UndefinedTable: ERROR: relation "bigint_idx_9e3cffd9404ea9edfaac" does not exist
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:221:in `rename_index_with_schema'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/swapping.rb:42:in `swap_indexes'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:174:in `block (2 levels) in swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `each'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:172:in `block in swap'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:123:in `run_block'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:134:in `block in run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:129:in `run_block_with_lock_timeout'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/with_lock_retries.rb:97:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retries_helpers.rb:52:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/v2.rb:101:in `with_lock_retries'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:153:in `swap'
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20250912003652_retry_swap_columns_for_merge_request_diffs_bigint_conversion.rb:97:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:33:in `block in exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/query_analyzer.rb:83:in `within'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/restrict_gitlab_schema.rb:30:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/automatic_lock_writes_on_tables.rb:21:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migration_helpers/require_disable_ddl_transaction_for_multiple_locks.rb:40:in `exec_migration'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:46:in `ddl_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/runner_backoff/active_record_mixin.rb:21:in `execute_migration_in_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:14:in `with_advisory_lock'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:191:in `configure_database'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:158:in `configure_pg_databases'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:102:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate
Output of checks
Results of GitLab environment info
Expand for output related to GitLab environment info
Results of GitLab application Check
Expand for output related to the GitLab application check
Checking GitLab subtasks ... Checking GitLab Shell ... GitLab Shell: ... GitLab Shell version \\\>= 14.45.3 ? ... OK (14.45.3) Running /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-check Internal API available: FAILED - Internal API unreachable gitlab-shell self-check failed Try fixing it: Make sure GitLab is running; Check the gitlab-shell configuration file: sudo -u git -H editor /opt/gitlab/embedded/service/gitlab-shell/config.yml Please fix the error above and rerun the checks. Checking GitLab Shell ... Finished Checking Gitaly ... Gitaly: ... default ... OK Checking Gitaly ... Finished Checking Sidekiq ... Sidekiq: ... Running? ... no Try fixing it: sudo -u git -H RAILS_ENV=production bin/background_jobs start For more information see: doc/install/installation.md in section "Install Init Script" see log/sidekiq.log for possible errors Please fix the error above and rerun the checks. Checking Sidekiq ... Finished Checking Incoming Email ... Incoming Email: ... Reply by email is disabled in config/gitlab.yml Checking Incoming Email ... Finished Checking LDAP ... LDAP: ... LDAP is disabled in config/gitlab.yml Checking LDAP ... Finished Checking GitLab App ... Database config exists? ... yes Tables are truncated? ... skipped All migrations up? ...
Possible fixes
Patch release information for backports
High-severity bug remediation
Edited by 🤖 GitLab Bot 🤖