Bug #7353
closedInstallation occasionally fails: failed to call refresh: /usr/sbin/foreman-rake db:seed returned 1 instead of one of [0] with "Validation failed: Name has already been taken" in katello-installer.log
Description
Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=1135989
Version-Release number of selected component (if applicable):
katello-installer-0.0.64-1.el7sat.noarch
How reproducible:
rare
Steps to Reproduce:
yum install -y katello
katello-installer
Actual results:
[...]
[31m /Stage[main]/Foreman::Database/Foreman::Rake[db:seed]/Exec[foreman-rake-db:seed]: Failed to call refresh: /usr/sbin/foreman-rake db:seed returned 1 instead of one of [0]
[0m[31m /Stage[main]/Foreman::Database/Foreman::Rake[db:seed]/Exec[foreman-rake-db:seed]: /usr/sbin/foreman-rake db:seed returned 1 instead of one of [0]
[0mNotice: /Stage[main]/Foreman::Database/Foreman::Ra: 488/489, 99%, 0.0/s, elapsed: 00:07:03
[...]
E, [2014-08-31T22:46:53.324338 #29233] ERROR -- : : 488/489, 99%, 0.0/s, elapsed: 00:12:33
[31m /Stage[main]/Foreman_proxy::Register/Foreman_smartproxy[ibm-ls22-03.rhts.eng.brq.redhat.com]: Could not evaluate: 500 Internal Server Error
[0m[32mDone [0m: 489/489, 100%, 0.0/s, elapsed: 00:12:37
[32mDone [0m: 489/489, 100%, 0.0/s, elapsed: 00:12:37
[1m[31mSomething went wrong![0m Check the log for ERROR-level output
The full log is at [1m[36m/var/log/katello-installer/katello-installer.log[0m
:: [ FAIL ] :: Command 'katello-installer --foreman-admin-email 'root@localhost' --foreman-admin-username 'admin' --foreman-admin-password 'changeme'' (Expected 0, got 6)
Expected results:
Installer succeeds
Additional info:
The issue seems to be caused by race-condition in initializing the settings data (happen in an initializer). The httpd was sterted just before the db:seed (so that the rails environments started to be loaded at the same time, and probably started also filling the settings table: when initializing, the code first checks whether the settings are there, and if not, it creates them.
It seems the case here is two parallel processes (on from passenger, the second form db:seed) look if some settings exist (bot get an information, that the settings are not there yet), so both try to create the settings, but the second one fails on conflict, because in the meantime, the first process have already managed to save that.
Workaround:
echo >> /etc/foreman/database.yml
katello-installer
Updated by Dominic Cleal about 10 years ago
- Project changed from Foreman to Installer
- Translation missing: en.field_release set to 29
Updated by Ivan Necas about 10 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Applied in changeset puppet-foreman|dcde67122d8151e16b905201196a764671f0d63d.