Internally opensafd creates a lock file during start/stop to avoid
parallel execution. Wait for this lockfile to be released when a call to
opensafd stop is done.
---
 src/nid/opensafd.in | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/nid/opensafd.in b/src/nid/opensafd.in
index e7683bd7e..df90331a6 100644
--- a/src/nid/opensafd.in
+++ b/src/nid/opensafd.in
@@ -196,6 +196,22 @@ check_transport() {
        fi
 }
 
+wait_for_lockfile_clear() {
+    local timeout=10
+    local interval=2
+    while [ $timeout -gt 0 ]; do
+            if [ -e "$lockfile_inprogress" ]; then
+                    log_warning_msg "opensafd start/stop in progress. Wait for 
lockfile to be removed"
+                    logger -t $osafprog "opensafd start/stop in progress. Wait 
for lockfile to be removed"
+                    sleep $interval
+            else
+                    return 0
+            fi
+            timeout=`expr $timeout - $interval`
+    done
+    return 1
+}
+
 start() {
        export LD_LIBRARY_PATH=$pkglibdir:$LD_LIBRARY_PATH
         pidofproc -p $amfnd_pid $amfnd_bin > /dev/null 2>&1
@@ -251,8 +267,7 @@ start() {
 
 stop() {
        logger -t $osafprog "Stopping OpenSAF Services"
-
-       if [ -e "$lockfile_inprogress" ]; then
+        if ! wait_for_lockfile_clear; then
                RETVAL=1
                log_warning_msg "opensafd start/stop already in progress. 
Unable to continue"
                logger -t $osafprog "opensafd start/stop already in progress. 
Unable to continue"
-- 
2.11.0


------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to