Skip to content

Commit 7d62793

Browse files
[feature] Try deleting old data if required memory not available #46
Closes #46
1 parent 5460f01 commit 7d62793

1 file changed

Lines changed: 25 additions & 16 deletions

File tree

openwrt-openwisp-monitoring/files/monitoring.agent

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,28 @@ show_version() {
3535
echoerr() { echo "$@" 1>&2 && exit 1; }
3636

3737
check_available_memory() {
38-
total=$(ubus call system info | jsonfilter -e '@.memory.total')
39-
available=$(ubus call system info | jsonfilter -e '@.memory.available')
40-
required=$(echo - | awk -v percent="$REQUIRED_PERCENT" -v total="$total" '{printf("%.f",percent*total)}')
38+
while true; do
39+
total=$(ubus call system info | jsonfilter -e '@.memory.total')
40+
available=$(ubus call system info | jsonfilter -e '@.memory.available')
41+
required=$(echo - | awk -v percent="$REQUIRED_PERCENT" -v total="$total" '{printf("%.f",percent*total)}')
4142

42-
if [ "$available" -ge "$required" ]; then
43-
echo "0"
44-
else
45-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Not enough memory available, skipping collect data." \
46-
-p daemon.warn
47-
echo "1"
48-
fi
43+
if [ "$available" -ge "$required" ]; then
44+
return 0
45+
else
46+
# enough memory not available, deleting old data
47+
# shellcheck disable=SC2012
48+
file="$TMP_DIR/$(ls -1t "$TMP_DIR" | tail -1)"
49+
# ensure that memory was available previously and file was written
50+
if [ -f "$file" ]; then
51+
rm "$file"
52+
else
53+
[ "$VERBOSE_MODE" -eq "1" ] \
54+
&& logger -s "Not enough memory available, skipping collect data." \
55+
-p daemon.warn
56+
return 1
57+
fi
58+
fi
59+
done
4960
}
5061

5162
collect_data() {
@@ -56,8 +67,7 @@ collect_data() {
5667
/usr/sbin/netjson-monitoring --dump "$MONITORED_INTERFACES" && break
5768

5869
if [ "$n" -eq 5 ]; then
59-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Collecting data failed!" \
60-
-p daemon.err
70+
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Collecting data failed!" -p daemon.err
6171
fi
6272
n=$((n + 1))
6373
sleep 5
@@ -84,8 +94,7 @@ set_url_and_curl() {
8494

8595
save_data() {
8696
while true; do
87-
memory_available="$(check_available_memory)"
88-
if [ "$memory_available" -eq "0" ]; then
97+
if check_available_memory; then
8998
data="$(collect_data)"
9099
filename="$(date -u +'%d-%m-%Y_%H:%M:%S')"
91100
# make directory
@@ -168,10 +177,10 @@ send_data() {
168177
-t openwisp-monitoring \
169178
-p daemon.info
170179
FAILING=0
171-
[ -f "$RESPONSE_FILE" ] && rm "$RESPONSE_FILE"
180+
rm -f "$RESPONSE_FILE"
172181
fi
173182
# remove saved data
174-
[ -f "$filename" ] && rm "$filename"
183+
rm -f "$filename"
175184
break
176185
else
177186
timeout=$((timeout * 2))

0 commit comments

Comments
 (0)