diff --git a/builder/assets/clever.service b/builder/assets/clever.service index b432e96b..0c1776a7 100644 --- a/builder/assets/clever.service +++ b/builder/assets/clever.service @@ -7,8 +7,6 @@ After=network.target User=pi ExecStart=/bin/sh -c ". /home/pi/catkin_ws/devel/setup.sh; \ ROS_HOSTNAME=`hostname`.local exec roslaunch clever clever.launch --wait --screen --skip-log-check" -Restart=on-failure -RestartSec=3 [Install] WantedBy=multi-user.target diff --git a/clever/src/selfcheck.py b/clever/src/selfcheck.py index 633babc8..d5fc8b0a 100755 --- a/clever/src/selfcheck.py +++ b/clever/src/selfcheck.py @@ -642,16 +642,18 @@ def check_clever_service(): j.add_match(UNIT='clever.service') node_errors = [] r = re.compile(r'^(.*)\[(FATAL|ERROR)\] \[\d+.\d+\]: (.*)$') - for event in j: + for event in reversed(list(j)): msg = event['MESSAGE'] - if ('Stopped Clever ROS package' in msg) or ('Started Clever ROS package' in msg): - node_errors = [] + if 'Started Clever ROS package' in msg: + break # we're done elif ('[ERROR]' in msg) or ('[FATAL]' in msg): msg = r.search(msg).groups()[2] if msg in node_errors: continue node_errors.append(msg) - for error in node_errors: + elif ('ERROR: ' in msg) or ('while processing' in msg) or ('Invalid roslaunch XML syntax' in msg): + node_errors.append(msg) + for error in reversed(node_errors): failure(error)