Darryl L. Pierce
2008-May-28 10:27 UTC
[Ovirt-devel] Still having issues with the wui appliance install
I ran through it again and it's still not creating the ovirt database or role. After it finished the full installation and restarted, I watched it as it tried to bring up the ovirt system it complained that the postgres database was not initialized. When I got to a command prompt, went into Postgres and listed databases with \l I only saw postgres, template0 and template1 listed. -- Darryl L. Pierce, Sr. Software Engineer Red Hat, Inc. - http://www.redhat.com/ oVirt - Virtual Machine Management - http://www.ovirt.org/ "What do you care what other people think, Mr. Feynman?"
Alan Pevec
2008-May-28 16:16 UTC
[PATCH] wait for db to become ready - WAS Re: [Ovirt-devel] Still having issues with the wui appliance install
Darryl L. Pierce wrote:> I ran through it again and it's still not creating the ovirt database or > role. After it finished the full installation and restarted, I watched > it as it tried to bring up the ovirt system it complained that the > postgres database was not initialized. When I got to a command prompt, > went into Postgres and listed databases with \l I only saw postgres, > template0 and template1 listed.This turned out to be a timing issue in ovirt-wui-install during first boot, postgres was not ready immediately after 'service postgres start' returned. PG initscript has optimistic sleep 2 after starting postmaster daemon but this wui VM was created w/o KVM support (VT was not enabled in BIOS) and running slooowly with qemu-system-x86_64 With KVM it's fast enough so this doesn't happen. Here's the patch which should fix this: wait until we can connect to the database or timeout diff --git a/wui/scripts/ovirt-wui-install b/wui/scripts/ovirt-wui-install index 8d95d48..3891604 100755 --- a/wui/scripts/ovirt-wui-install +++ b/wui/scripts/ovirt-wui-install @@ -135,6 +135,21 @@ echo "host all all 127.0.0.1 255.255.255.0 trust" >> /var/lib/pgsql/data/pg_hba. service postgresql stop > /dev/null 2>&1 service postgresql start [ $? != 0 ] && echo "Failed to start database" && exit 1 +declare -i timeout=10 +while [[ timeout -gt 0 ]] +do + sleep 2 + psql -l -U postgres > /dev/null 2>&1 + rc=$? + if [[ rc -eq 0 ]] + then + break + else + echo Database not ready yet, retrying... + fi + let timeout-- +done +[[ timeout -eq 0 ]] && echo "Failed to start database" && exit 1 if [ -z $PASSWD ]; then # generate random pg user password