Upgrade to 16.5: Migration DropColumnsFromGeoNodeStatusTable fails because columns do not exist
Similar to #426066 (closed):
On update from 16.4 to 16.5: PG::UndefinedColumn: ERROR: column "wikis_retrying_verification_count" of relation "geo_node_statuses" does not exist.
Log
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: Running db:migrate rake task
main: == [advisory_lock_connection] object_id: 118660, pg_backend_pid: 1013923
main: == 20230918084159 DropColumnsFromGeoNodeStatusTable: migrating ================
main: -- remove_columns(:geo_node_statuses, :wikis_checksum_failed_count, :wikis_checksum_mismatch_count, :wikis_checksummed_count, :wikis_failed_count, :wikis_retrying_verification_count, :wikis_synced_count, :wikis_verification_failed_count, :wikis_verified_count, :design_repositories_count, :design_repositories_synced_count, :design_repositories_failed_count, :design_repositories_registry_count)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedColumn: ERROR: column "wikis_retrying_verification_count" of relation "geo_node_statuses" does not exist
/opt/gitlab/embedded/service/gitlab-rails/db/post_migrate/20230918084159_drop_columns_from_geo_node_status_table.rb:7:in `up'
...
I fixed 20230918084159_drop_columns_from_geo_node_status_table.rb like this:
```diff
--- 20230918084159_drop_columns_from_geo_node_status_table.rb.orig 2023-10-20 11:42:07.000000000 +0200
+++ 20230918084159_drop_columns_from_geo_node_status_table.rb 2023-10-23 08:04:05.127384769 +0200
@@ -4,8 +4,7 @@
enable_lock_retries!
def up
- remove_columns :geo_node_statuses,
- :wikis_checksum_failed_count,
+ [:wikis_checksum_failed_count,
:wikis_checksum_mismatch_count,
:wikis_checksummed_count,
:wikis_failed_count,
@@ -16,7 +15,11 @@
:design_repositories_count,
:design_repositories_synced_count,
:design_repositories_failed_count,
- :design_repositories_registry_count
+ :design_repositories_registry_count].each do |column_name|
+ next unless column_exists?(:geo_node_statuses, column_name)
+
+ remove_column :geo_node_statuses, column_name
+ end
end
def down
... so it looks like this:
def up
[:wikis_checksum_failed_count,
:wikis_checksum_mismatch_count,
:wikis_checksummed_count,
:wikis_failed_count,
:wikis_retrying_verification_count,
:wikis_synced_count,
:wikis_verification_failed_count,
:wikis_verified_count,
:design_repositories_count,
:design_repositories_synced_count,
:design_repositories_failed_count,
:design_repositories_registry_count].each do |column_name|
next unless column_exists?(:geo_node_statuses, column_name)
remove_column :geo_node_statuses, column_name
end
end
Edited by Markus Doits