Problem:
I just tried the upgrade the first time on my production system and it fails during database migration.
Expected outcome:
No errors during foreman-installer run.
Versions:
3.1.3/4.2.1 latest, upgrading to 3.2.1/4.3.1.
Distribution and version:
CentOS 7.9 up-to-date
Other relevant data:
2022-07-12 07:27:18 [DEBUG ] [configure] Foreman::Rake[db:migrate]: Starting to evaluate the resource (1386 of 2101)
2022-07-12 07:27:18 [DEBUG ] [configure] Foreman::Rake[db:migrate]: Evaluated in 0.00 seconds
2022-07-12 07:27:18 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]: Starting to evaluate the resource (1387 of 2101)
2022-07-12 07:27:18 [DEBUG ] [configure] Exec[foreman-rake-db:migrate](provider=posix): Executing check '/usr/sbin/foreman-rake db:abort_if_pending_migrations'
2022-07-12 07:27:18 [DEBUG ] [configure] Executing with uid=foreman: '/usr/sbin/foreman-rake db:abort_if_pending_migrations'
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: API controllers newer than Apipie cache! Run apipie:cache rake task to regenerate cache.
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: Run `rails db:migrate` to update your database then try again.
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: You have 16 pending migrations:
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20210708123832 AddParentTaskIdToRemoteTasks
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20211111115000 DropFixDbCacheSetting
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20211123170430 TasksSettingsToDslCategory
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20211201154845 AddUniqueIndexes
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20211208034230 AddContentViewAndLifecycleEnvironment
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20211220185935 CleanDuplicateContentUnits
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220110223754 UpdateDisconnectedSettings
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220111110149 DropRequireSslSmartProxiesSetting
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220120163252 FixDockerDownloadPolicy
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220124191056 AddTypeToCdnConfiguration
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220127120843 FixDebianDownloadPolicy
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220204171908 RenameDockerTagsWhitelistAndAddExcludeTags
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220207140355 ChangeDebAttributesSizeLimit
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220208134539 RenameCentOsStreamOs
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220209205137 ExpandSyncTimeoutSettings
2022-07-12 07:27:31 [DEBUG ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/unless: 20220303160220 RemoveDuplicateErrata
2022-07-12 07:27:31 [DEBUG ] [configure] Exec[foreman-rake-db:migrate](provider=posix): Executing '/usr/sbin/foreman-rake db:migrate'
2022-07-12 07:27:31 [DEBUG ] [configure] Executing with uid=foreman: '/usr/sbin/foreman-rake db:migrate'
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: API controllers newer than Apipie cache! Run apipie:cache rake task to regenerate cache.
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: rake aborted!
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: StandardError: An error has occurred, this and all later migrations canceled:
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns:
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_operatingsystems_on_name_and_major_and_minor"
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: DETAIL: Key (name, major, minor)=(CentOS_Stream, 8, ) already exists.
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: /opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.3.7/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `async_exec_params'
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: /opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.3.7/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.3.7/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.3.7/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
2022-07-12 07:27:43 [INFO ] [configure] /Stage[main]/Foreman::Database/Foreman::Rake[db:migrate]/Exec[foreman-rake-db:migrate]/returns: /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.3.7/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
The migration RenameCentOsStreamOs renames the centos stream os but does not check if the new name already exists. I have:
# hammer os info --id=4
Id: 4
Title: CentOS Stream 8
Release name:
Family: Redhat
Name: CentOS
Major version: 8
Minor version:
...
# hammer os info --id=31
Id: 31
Title: CentOS_Stream 8
Release name:
Family: Redhat
Name: CentOS_Stream
Major version: 8
Minor version:
...
It seems a little short sighted for a migration to assume a rename on an unique index column will always pass…
I am thinking about whether I do the obvious workaround and try again or not. Considering how many attempts and months it took for me to get to working a working 4.2 this isn’t a good start…