Start mongod before calling ceilometer-dbsync
authorMichele Baldessari <michele@acksyn.org>
Sun, 25 Sep 2016 08:49:15 +0000 (10:49 +0200)
committerMichele Baldessari <michele@acksyn.org>
Sun, 25 Sep 2016 08:49:15 +0000 (10:49 +0200)
Currently we in major_upgrade_controller_pacemaker_2.sh we are calling
ceilometer-dbsync before mongod is actually started (only galera is
started at this point). This will make the dbsync hang indefinitely
until the heat stack times out.

Now this approach should be okay, but do note that when we start mongod
via systemctl we are not guaranteed that it will be up on all nodes
before we call ceilometer-dbsync. This *should* be okay because
ceilometer-dbsync keeps retrying and eventually one of the nodes will
be available. A completely clean fix here would be to add another
step in heat to have the guarantee that all mongo servers are up and
running before the dbsync call.

Change-Id: I10c960b1e0efdeb1e55d77c25aebf1e3e67f17ca
Closes-Bug: #1627453

extraconfig/tasks/major_upgrade_controller_pacemaker_2.sh

index 6bb2fa7..e91c767 100755 (executable)
@@ -32,6 +32,13 @@ fi
 
 start_or_enable_service galera
 check_resource galera started 600
+# We need mongod which is now a systemd service up and running before calling
+# ceilometer-dbsync. There is still a race here: mongod might not be up on all nodes
+# so ceilometer-dbsync will fail a couple of times before that. As it retries indefinitely
+# we should be good.
+# Due to LP Bug https://bugs.launchpad.net/tripleo/+bug/1627254 am using systemctl directly atm
+systemctl start mongod
+check_resource mongod started 600
 
 if [[ -n $(is_bootstrap_node) ]]; then
     tstart=$(date +%s)