From d174a8172060b9d57a027892d984f30fe502a433 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Sun, 7 Oct 2007 22:08:21 +0000
Subject: [PATCH] fix: - problem with restart when datamover.sh not started
 from installation directory - problem with not properly detecting failures in
 SelfTest if they take longer than 1s

SVN: 2032
---
 datamover/dist/datamover.sh | 45 +++++++++++++++++++++++++++----------
 1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/datamover/dist/datamover.sh b/datamover/dist/datamover.sh
index e8987a09366..ba28aa500a0 100755
--- a/datamover/dist/datamover.sh
+++ b/datamover/dist/datamover.sh
@@ -45,7 +45,10 @@ isPIDRunning()
 
 PIDFILE=datamover.pid
 CONFFILE=etc/datamover.conf
+LOGFILE=log/datamover_log.txt
 STARTUPLOG=log/startup_log.txt
+SUCCESS_MSG="Self test successfully completed"
+MAX_LOOPS=10
 
 #
 # change to installation directory
@@ -56,31 +59,49 @@ if [ -L $bin ]; then
 fi
 WD=`dirname $bin`
 cd $WD
+SCRIPT=./`basename $0`
 
 #
 # source configuration script, if any
 #
 test -f $CONFFILE && source $CONFFILE
 if [ "$JAVA_HOME" != "" ]; then
-	JAVA_HOME="$JAVA_HOME/bin/"
+	JAVA_BIN="$JAVA_HOME/bin/java"
+else
+	JAVA_BIN="java"
 fi
 
 case "$1" in
         start)
 	        echo -n "Starting Datamover "
 
-		shift 1		
-		${JAVA_HOME}java ${JAVA_OPTS} -jar lib/datamover.jar "$@" > $STARTUPLOG 2>&1 & echo $! > $PIDFILE
+		shift 1
+		${JAVA_BIN} ${JAVA_OPTS} -jar lib/datamover.jar "$@" > $STARTUPLOG 2>&1 & echo $! > $PIDFILE
 		if [ $? -eq 0 ]; then
-			# wait for initial self-test to finish"
-			sleep 1
+			# wait for initial self-test to finish
+			n=0
+			while [ $n -lt $MAX_LOOPS ]; do
+				sleep 1
+				grep "$SUCCESS_MSG" $LOGFILE > /dev/null 2>&1
+				if [ $? -eq 0 ]; then
+					break
+				fi
+				n=$(($n+1))
+			done 
 			PID=`cat $PIDFILE`
 			isPIDRunning $PID
 			if [ $? -eq 0 ]; then
-				echo "(pid $PID)"
+				grep -q "Self test successfully completed" $LOGFILE
+				if [ $? -ne 0 ]; then
+					echo "(pid $PID - WARNING: SelfTest not yet finished)"
+				else
+					echo "(pid $PID)"
+				fi
 			else
 				rm $PIDFILE
-				echo "FAILED - see $WD/$STARTUPLOG for details"
+				echo "FAILED"
+				echo "startup log says:"
+				cat $WD/$STARTUPLOG
 			fi
 		else
 			echo "FAILED"
@@ -125,17 +146,17 @@ case "$1" in
         	touch .MARKER_recovery
         ;;
         restart)
-	        $0 stop
-	        $0 start
+	        $SCRIPT stop
+	        $SCRIPT start
         ;;
 	help)
-		${JAVA_HOME}java ${JAVA_OPTS} -jar lib/datamover.jar --help
+		${JAVA_BIN} ${JAVA_OPTS} -jar lib/datamover.jar --help
 	;;
 	version)
-                ${JAVA_HOME}java ${JAVA_OPTS} -jar lib/datamover.jar --version
+                ${JAVA_BIN} ${JAVA_OPTS} -jar lib/datamover.jar --version
 	;;
 	test-notify)
-		${JAVA_HOME}java ${JAVA_OPTS} -jar lib/datamover.jar --test-notify
+		${JAVA_BIN} ${JAVA_OPTS} -jar lib/datamover.jar --test-notify
 	;;
         *)
         echo $"Usage: $0 {start|stop|restart|status|recover|help|version|test-notify}"
-- 
GitLab