remove file if it is not a pipe; prefer read over builtin sleep; fallback to sleep if builtin sleep fails
Costa Tsaousis (ktsaou) committed
May 26, 2018 at 16:54 UTC
8ef74ebfe059d8808276f7e72e26bbf5032fccaf
1 file changed
+22
-5
plugins.d/loopsleepms.sh.inc
+22
-5
@@ -85,11 +85,12 @@ fi
85
# -----------------------------------------------------------------------------
86
# use read with timeout for sleep
87
88
-mysleep="mysleep_read"
88
+mysleep=""
89
90
mysleep_fifo="${NETDATA_CACHE_DIR-/tmp}/.netdata_bash_sleep_timer_fifo"
91
-[ ! -e "${mysleep_fifo}" ] && mkfifo "${mysleep_fifo}"
92
-[ ! -e "${mysleep_fifo}" ] && mysleep="sleep"
91
+[ -f "${mysleep_fifo}" ] && rm "${mysleep_fifo}"
92
+[ ! -p "${mysleep_fifo}" ] && mkfifo "${mysleep_fifo}"
93
+[ -p "${mysleep_fifo}" ] && mysleep="mysleep_read"
94
95
mysleep_read() {
96
read -t "${1}" <>"${mysleep_fifo}"
@@ -105,7 +106,18 @@ mysleep_read() {
106
# -----------------------------------------------------------------------------
107
# use bash loadable module for sleep
108
108
-if [ "$((BASH_VERSINFO[0] +0))" -ge 3 ]
109
+builtin_sleep() {
110
+ builtin sleep "${1}"
111
+ ret=$?
112
+ if [ $ret -ne 0 ]
113
+ then
114
+ echo >&2 "$0: Cannot use builtin sleep for sleeping (return code ${ret})."
115
+ mysleep="sleep"
116
+ ${mysleep} "${1}"
117
+ fi
118
+}
119
+
120
+if [ -z "${mysleep}" -a "$((BASH_VERSINFO[0] +0))" -ge 3 ]
121
then
122
# enable modules only for bash version 3+
123
@@ -120,7 +132,7 @@ if [ "$((BASH_VERSINFO[0] +0))" -ge 3 ]
132
then
133
if enable -f "${bash_modules_path}/${bash_module_sleep}" sleep 2>/dev/null
134
then
123
- mysleep="builtin sleep"
135
+ mysleep="builtin_sleep"
136
#echo >&2 "$0: Using bash loadable ${bash_modules_path}/sleep for sleep"
137
break
138
fi
@@ -130,6 +142,11 @@ if [ "$((BASH_VERSINFO[0] +0))" -ge 3 ]
142
done
143
fi
144
145
+# -----------------------------------------------------------------------------
146
+# fallback to external sleep
147
+
148
+[ -z "${mysleep}" ] && mysleep="sleep"
149
+
150
151
# -----------------------------------------------------------------------------
152
# this function is used to sleep a fraction of a second