Hi Ramesh,

A gentle reminder for review/Thanks HansN

-----Original Message-----
From: Hans Nordeback [mailto:hans.nordeb...@ericsson.com] 
Sent: den 22 december 2016 14:17
To: ramesh.bet...@oracle.com; Anders Widell <anders.wid...@ericsson.com>
Cc: opensaf-devel@lists.sourceforge.net
Subject: [devel] [PATCH 1 of 1] opensafd: Disallow parallel execution of 
opensafd operations start and stop [#2244]

 osaf/services/infrastructure/nid/scripts/opensafd.in |  105 +++++++++++-------
 1 files changed, 62 insertions(+), 43 deletions(-)


diff --git a/osaf/services/infrastructure/nid/scripts/opensafd.in 
b/osaf/services/infrastructure/nid/scripts/opensafd.in
--- a/osaf/services/infrastructure/nid/scripts/opensafd.in
+++ b/osaf/services/infrastructure/nid/scripts/opensafd.in
@@ -14,6 +14,7 @@
 
 osafdirfile=@sysconfdir@/@PACKAGE_NAME@/osafdir.conf
 osafprog="opensafd"
+osafprog_inprogress="opensafd_inprogress"
 
 # Source LSB functions library
 . /lib/lsb/init-functions
@@ -28,6 +29,7 @@ fi
 
 binary=$pkglibdir/$osafprog
 lockfile=$lockdir/$osafprog
+lockfile_inprogress=$lockdir/$osafprog_inprogress
 amfnd_bin=$pkglibdir/osafamfnd
 amfnd_pid=$pkgpiddir/osafamfnd.pid
 
@@ -216,22 +218,30 @@ start() {
        #enable_coredump
 
        echo -n "Starting OpenSAF Services (Using $MDS_TRANSPORT):"
-       start_daemon $binary $args
-       RETVAL=$?
-       if [ $RETVAL -eq 0 ]; then
-               logger -t $osafprog "OpenSAF($osafversion - $osafcshash) 
services successfully started"
-               touch $lockfile
-               log_success_msg
+       if [ -e "$lockfile_inprogress" ]; then
+               RETVAL=1
+               logger -t $osafprog "opensafd start/stop already in progress. 
Unable to contiune"
+               logger -t $osafprog "To forcefully start/stop OpenSAF remove 
$lockfile_inprogress"
        else
-               final_clean
-               log_failure_msg
-               if [ $REBOOT_ON_FAIL_TIMEOUT -ne 0 ]; then
-                       logger -t $osafprog "Starting OpenSAF failed, 
rebooting..." 
-                       sleep $REBOOT_ON_FAIL_TIMEOUT
-                       /sbin/reboot &
+               touch "$lockfile_inprogress"
+               start_daemon $binary $args
+               RETVAL=$?
+               if [ $RETVAL -eq 0 ]; then
+                       logger -t $osafprog "OpenSAF($osafversion - 
$osafcshash) services successfully started"
+                       touch $lockfile
+                       log_success_msg
                else
-                       logger -t $osafprog "Starting OpenSAF failed"
+                       final_clean
+                       log_failure_msg
+                       if [ $REBOOT_ON_FAIL_TIMEOUT -ne 0 ]; then
+                               logger -t $osafprog "Starting OpenSAF failed, 
rebooting..." 
+                               sleep $REBOOT_ON_FAIL_TIMEOUT
+                               /sbin/reboot &
+                       else
+                               logger -t $osafprog "Starting OpenSAF failed"
+                       fi
                fi
+               rm -rf "$lockfile_inprogress"
        fi
        return $RETVAL
 }
@@ -239,40 +249,49 @@ start() {
 stop() {
        logger -t $osafprog "Stopping OpenSAF Services"
 
-       amfpid=`pidofproc -p $amfnd_pid $amfnd_bin`
-       echo -n "Stopping OpenSAF Services: "
-       if [ -n "$amfpid" ]; then
-               kill $amfpid
-               timeout=$TERMTIMEOUT
-               while [ $timeout -gt 0 ]; do
-                       sleep 1
-                       [ -d /proc/$amfpid ] || break
-                       timeout=$((timeout-1))
-               done
-               [ -d /proc/$amfpid ] && RETVAL=1
-               if [ $RETVAL -eq 1 ]; then
-                       logger -t $osafprog "amfnd has not yet exited, killing 
it forcibly."
-                       kill -9 $amfpid 
+       if [ -e "$lockfile_inprogress" ]; then
+               RETVAL=1
+               logger -t $osafprog "opensafd start/stop already in progress. 
Unable to contiune"
+               logger -t $osafprog "To forcefully start/stop OpenSAF remove 
$lockfile_inprogress"
+       else
+               touch "$lockfile_inprogress"
+               amfpid=`pidofproc -p $amfnd_pid $amfnd_bin`
+               echo -n "Stopping OpenSAF Services: "
+               if [ -n "$amfpid" ]; then
+                       kill $amfpid
+                       timeout=$TERMTIMEOUT
+                       while [ $timeout -gt 0 ]; do
+                               sleep 1
+                               [ -d /proc/$amfpid ] || break
+                               timeout=$((timeout-1))
+                       done
+                       [ -d /proc/$amfpid ] && RETVAL=1
+                       if [ $RETVAL -eq 1 ]; then
+                               logger -t $osafprog "amfnd has not yet exited, 
killing it forcibly."
+                               kill -9 $amfpid 
+                       fi
+               else
+                       pkill -9 osaf* >/dev/null 2>&1
                fi
-       else
-               pkill -9 osaf* >/dev/null 2>&1
-       fi
 
-       final_clean
+               final_clean
 
-       if [ $RETVAL -eq 0 ]; then
-               logger -t $osafprog "OpenSAF services successfully stopped"
-               log_success_msg
-       else
-               log_failure_msg
-               # If AMF fails to terminate its components,
-               # this system is out of control, reboot it now!
-               if [ $REBOOT_ON_FAIL_TIMEOUT -ne 0 ]; then
-                       logger -t $osafprog "Stopping OpenSAF failed, 
rebooting..."
-                       sleep $REBOOT_ON_FAIL_TIMEOUT
-                       /sbin/shutdown -r now "OpenSAF termination failed 
(timeout)"
+               rm -rf "$lockfile_inprogress"
+
+               if [ $RETVAL -eq 0 ]; then
+                       logger -t $osafprog "OpenSAF services successfully 
stopped"
+                       log_success_msg
                else
-                       logger -t $osafprog "Stoping OpenSAF failed"
+                       log_failure_msg
+                       # If AMF fails to terminate its components,
+                       # this system is out of control, reboot it now!
+                       if [ $REBOOT_ON_FAIL_TIMEOUT -ne 0 ]; then
+                               logger -t $osafprog "Stopping OpenSAF failed, 
rebooting..."
+                               sleep $REBOOT_ON_FAIL_TIMEOUT
+                               /sbin/shutdown -r now "OpenSAF termination 
failed (timeout)"
+                       else
+                               logger -t $osafprog "Stoping OpenSAF failed"
+                       fi
                fi
        fi
        return $RETVAL

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi 
processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/intel 
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to