Browse code

XenAPI: Fix race condition on tailing stack.log

Stack.log is created by stack.sh, which is started by run.sh. Using
the pid from run.sh doesn't mean that stack.log has been created yet
so wait for the log to be created before tailing

Change-Id: I86e563478949cb7bbe0d1afd80b790ba70328e3a

Bob Ball authored on 2014/07/14 23:18:33
Showing 1 changed files
... ...
@@ -382,10 +382,16 @@ if [ "$WAIT_TILL_LAUNCH" = "1" ]  && [ -e ~/.ssh/id_rsa.pub  ] && [ "$COPYENV" =
382 382
     while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "service devstack status | grep -q running"; do
383 383
         sleep 10
384 384
     done
385
-    echo -n "devstack is running"
385
+    echo -n "devstack service is running, waiting for stack.sh to start logging..."
386
+
387
+    while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "test -e /tmp/devstack/log/stack.log"; do
388
+        sleep 10
389
+    done
386 390
     set -x
387 391
 
388
-    # Watch devstack's output
392
+    # Watch devstack's output (which doesn't start until stack.sh is running,
393
+    # but wait for run.sh (which starts stack.sh) to exit as that is what
394
+    # hopefully writes the succeded cookie.
389 395
     pid=`ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS pgrep run.sh`
390 396
     ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "tail --pid $pid -n +1 -f /tmp/devstack/log/stack.log"
391 397