Skip to content

Commit

Permalink
[change] Stop sending data on repeated 404 responses #105
Browse files Browse the repository at this point in the history
The openwisp-monitoring agent will exit (killing both the
processes for collecting and sending data) if the device
has been deleted from OpenWISP Controller.

The delete is determined by checking if the openwisp-config agent
agent is running, which exits on repeated 404 response
for checksum response.

Closes #105
  • Loading branch information
pandafy committed May 2, 2024
1 parent 0f829f8 commit 8df816e
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions openwisp-monitoring/files/monitoring.agent
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,20 @@ send_data() {
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Data not sent successfully. Retrying in $timeout seconds." \
-p daemon.warn
failures=$((failures + 1))
if [ "$response_code" = "404" ]; then
# If we get a HTTP 404 response, it could mean that the device has been deleted from OpenWISP
# Controller. We check if openwisp-config agent is running to determine if the device has been
# deleted. If openwisp-config agent is not running, the monitoring agent will also exit.
if ! pgrep -x "openwisp_config" >/dev/null; then
logger -s "Giving up and shutting down: the device may have been deleted from OpenWISP Controller" \
-t openwisp-monitoring \
-p daemon.err
# get process id of the process collecting data
pid=$(pgrep -f "openwisp-monitoring.*--mode collect")
kill -SIGKILL "$pid"
exit 2
fi
fi
sleep "$timeout"
fi
done
Expand Down

0 comments on commit 8df816e

Please sign in to comment.