openSUSE / open-build-service

Build and distribute Linux packages from sources in an automatic, consistent and reproducible way #obs
https://openbuildservice.org
GNU General Public License v2.0
923 stars 437 forks source link

AddDiffRefToComments upgrade fails #15583

Closed jengelh closed 7 months ago

jengelh commented 7 months ago

Version: obs-server-2.11~alpha.20240201T172034.d6e811e0b-150500.16460.2.noarch

Update of the database fails.

# cd /srv/www/obs/api/
# RAILS_ENV="production" bin/rails db:migrate:with_data

To use retry middleware with Faraday v2.0+, install `faraday-retry` gem
== Schema =====================================================================
== 20230224114624 AddDiffRefToComments: migrating =============================
[strong_migrations] DANGER: Lock timeout is longer than 10 seconds: 86400
-- add_column(:comments, :diff_ref, :string)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name 'diff_ref'
/srv/www/obs/api/db/migrate/20230224114624_add_diff_ref_to_comments.rb:3:in `change'

Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name 'diff_ref'
/srv/www/obs/api/db/migrate/20230224114624_add_diff_ref_to_comments.rb:3:in `change'

Caused by:
Mysql2::Error: Duplicate column name 'diff_ref'
/srv/www/obs/api/db/migrate/20230224114624_add_diff_ref_to_comments.rb:3:in `change'
Tasks: TOP => db:migrate:with_data
(See full trace by running task with --trace)
# RAILS_ENV="production" bin/rails db:migrate:with_data --trace
To use retry middleware with Faraday v2.0+, install `faraday-retry` gem
** Invoke db:migrate:with_data (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate:with_data
== Schema =====================================================================
== 20230224114624 AddDiffRefToComments: migrating =============================
[strong_migrations] DANGER: Lock timeout is longer than 10 seconds: 86400
-- add_column(:comments, :diff_ref, :string)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name 'diff_ref'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `_query'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `block in query'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `query'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:638:in `block (2 levels) in raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:637:in `block in raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:752:in `block in log'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:743:in `log'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:636:in `raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/mysql/database_statements.rb:96:in `raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/mysql/database_statements.rb:47:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/schema_statements.rb:628:in `add_column'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:965:in `block in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:935:in `block in say_with_time'
/usr/lib64/ruby/3.1.0/benchmark.rb:296:in `measure'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:935:in `say_with_time'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:954:in `method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:17:in `block (2 levels) in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/checker.rb:101:in `perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:16:in `block in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:15:in `catch'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:15:in `method_missing'
/srv/www/obs/api/db/migrate/20230224114624_add_diff_ref_to_comments.rb:3:in `change'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:905:in `exec_migration'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:889:in `block (2 levels) in migrate'
/usr/lib64/ruby/3.1.0/benchmark.rb:296:in `measure'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:888:in `block in migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:887:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:5:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1095:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1409:in `block in execute_migration_in_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1462:in `ddl_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migrator.rb:4:in `ddl_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1408:in `execute_migration_in_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1370:in `run_without_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1323:in `block in run'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1481:in `block in with_advisory_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1496:in `with_advisory_lock_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1477:in `with_advisory_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1323:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1180:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/lib/data_migrate/schema_migration.rb:17:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/lib/data_migrate/database_tasks.rb:63:in `run_migration'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:51:in `block (4 levels) in <top (required)>'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:50:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:50:in `block (3 levels) in <top (required)>'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/airbrake-9.4.3/lib/airbrake/rake.rb:17:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/command.rb:51:in `invoke'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name 'diff_ref'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `_query'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `block in query'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `query'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:638:in `block (2 levels) in raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:637:in `block in raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:752:in `block in log'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:743:in `log'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:636:in `raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/mysql/database_statements.rb:96:in `raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/mysql/database_statements.rb:47:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/schema_statements.rb:628:in `add_column'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:965:in `block in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:935:in `block in say_with_time'
/usr/lib64/ruby/3.1.0/benchmark.rb:296:in `measure'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:935:in `say_with_time'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:954:in `method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:17:in `block (2 levels) in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/checker.rb:101:in `perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:16:in `block in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:15:in `catch'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:15:in `method_missing'
/srv/www/obs/api/db/migrate/20230224114624_add_diff_ref_to_comments.rb:3:in `change'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:905:in `exec_migration'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:889:in `block (2 levels) in migrate'
/usr/lib64/ruby/3.1.0/benchmark.rb:296:in `measure'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:888:in `block in migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:887:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:5:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1095:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1409:in `block in execute_migration_in_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1462:in `ddl_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migrator.rb:4:in `ddl_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1408:in `execute_migration_in_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1370:in `run_without_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1323:in `block in run'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1481:in `block in with_advisory_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1496:in `with_advisory_lock_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1477:in `with_advisory_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1323:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1180:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/lib/data_migrate/schema_migration.rb:17:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/lib/data_migrate/database_tasks.rb:63:in `run_migration'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:51:in `block (4 levels) in <top (required)>'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:50:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:50:in `block (3 levels) in <top (required)>'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/airbrake-9.4.3/lib/airbrake/rake.rb:17:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/command.rb:51:in `invoke'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Caused by:
Mysql2::Error: Duplicate column name 'diff_ref'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `_query'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in `block in query'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in `query'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:638:in `block (2 levels) in raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:637:in `block in raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:752:in `block in log'
/usr/lib64/obs-api/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:743:in `log'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:636:in `raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/mysql/database_statements.rb:96:in `raw_execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/mysql/database_statements.rb:47:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/schema_statements.rb:628:in `add_column'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:965:in `block in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:935:in `block in say_with_time'
/usr/lib64/ruby/3.1.0/benchmark.rb:296:in `measure'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:935:in `say_with_time'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:954:in `method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:17:in `block (2 levels) in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/checker.rb:101:in `perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:16:in `block in method_missing'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:15:in `catch'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:15:in `method_missing'
/srv/www/obs/api/db/migrate/20230224114624_add_diff_ref_to_comments.rb:3:in `change'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:905:in `exec_migration'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:889:in `block (2 levels) in migrate'
/usr/lib64/ruby/3.1.0/benchmark.rb:296:in `measure'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:888:in `block in migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:887:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migration.rb:5:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1095:in `migrate'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1409:in `block in execute_migration_in_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1462:in `ddl_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/strong_migrations-1.7.0/lib/strong_migrations/migrator.rb:4:in `ddl_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1408:in `execute_migration_in_transaction'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1370:in `run_without_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1323:in `block in run'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1481:in `block in with_advisory_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:215:in `with_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1496:in `with_advisory_lock_connection'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1477:in `with_advisory_lock'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1323:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/migration.rb:1180:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/lib/data_migrate/schema_migration.rb:17:in `run'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/lib/data_migrate/database_tasks.rb:63:in `run_migration'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:51:in `block (4 levels) in <top (required)>'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:50:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/data_migrate-9.2.0/tasks/databases.rake:50:in `block (3 levels) in <top (required)>'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/airbrake-9.4.3/lib/airbrake/rake.rb:17:in `execute'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/command.rb:51:in `invoke'
/usr/lib64/obs-api/ruby/3.1.0/gems/railties-7.0.8/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate:with_data
ncounter commented 7 months ago

@jengelh Hi, was this the first time you executed the migration or did you tried it before (and maybe it failed)? The column seems to exist already

jengelh commented 7 months ago

The system was originally installed in 2014, and upgraded as the years passed. I do not recall if anything failed earlier, which is to say there might have been an error at some point and that I have let it stay the way it was, and later install a newer obs-server.rpm and try the migration again (and then seeing it fail again).

hennevogel commented 7 months ago

Well we can't really do anything in that case from the package. If the migration failed, it failed and needs manual intervention. You can "just" remove the migration file and re-run the RAILS_ENV="production" bin/rails db:migrate:with_data