ack, code review only.
Minor comments, in current opensafd script, the test and create of the
lockfile is not atomic, so there is
a window for race. Perhaps we can move the creation of the lockfile to
function "wait_for_lockfile_clear",
and make the test and create of the lockfile atomic?
/HansN
On 06/01/2017 02:37 PM, Rafael Odzakow wrote:
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"
------------------------------------------------------------------------------
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