Note that we maybe should avoid adding new a dependency towards the
inotifywait tool...
regards,
Anders Widell
On 06/02/2017 02:38 PM, Rafael Odzakow wrote:
Thanks I am trying to implement the suggestions and will send out a
new patch soon.
On 06/02/2017 08:51 AM, Hans Nordebäck wrote:
Hi Rafael,
I forgot one thing, not to say that you should change your patch,
only as an example as we use inotify in opensaf,
the following may also work:
wait_for_lockfile_clear() {
inotifywait -q -t 20 -e delete_self $lockfile_inprogress
if [ $? = 2 ]; then
return 1
else
touch $lockfile_inprogress
return 0
fi
}
/Hans
On 06/02/2017 07:27 AM, Hans Nordebäck wrote:
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