Depends on bug and check file bug
I think I've found two bugs that have arisen since the release of monit-5.9+. I have a check for the local mailq's on our systems. Here is my monit conf file check:
check program mailq with path /usr/local/monit/conf/conf.d/scripts/mailq.sh
with timeout 30 seconds
if status != 0 then alert
check file mailq-sub with path /var/run/mailq.size
if changed checksum
then alert
depends on mailq
and the associated bash file that gets executed:
#!/bin/bash
#
# Helper script for monit to check the mail queue's. Monit will watch
# /var/run/mailq-sub.size.
#
MAX_SIZE=${1:-10}
CHECK_FILE="/var/run/mailq.size"
LOCK_FILE="${CHECK_FILE}.lock"
[ -f $CHECK_FILE ] || echo 0 > $CHECK_FILE
CUR_SIZE=`mailq -Ac | tail -n 1 | awk '{ print($3); }'`
if [ $CUR_SIZE -gt $MAX_SIZE ]; then
if [ ! -f $LOCK_FILE ]; then
echo $CUR_SIZE > $CHECK_FILE
echo > $LOCK_FILE
fi
else
rm -f $LOCK_FILE
fi
exit 0
When running this conf with monit-5.8.1, monit will start fine even though the mailq.size file doesn't actually exist, and it will execute the bash script above and the file is created.
In monit-5.9+, monit will fail to even start with the following error:
checksum: file /var/run/mailq.size is not regular file
/usr/local/monit/conf/conf.d/mailq.conf:6: Cannot compute a checksum for file /var/run/mailq.size '/var/run/mailq.size'
/usr/local/monit/conf/conf.d/mailq.conf:6: Invalid checksum [0000000000000000000000000000000000000000] for file /var/run/mailq.size '/var/run/mailq.size'
In monit-5.8.1, it would continue on it's merry way and create the file once the 'mailq' check was run. It seems that the depends on statement is broken in 5.9+ as well, as it should ignore the 'mailq-sub' check until the 'mailq' check is satisfied. The mailq.size file is never created on 5.9+.
Comments (4)
-
Account Deleted reporter -
repo owner - changed status to resolved
Fixed: Issue
#146: Monit didn't start if checksum test was set for nonexistent file.→ <<cset 5eb70d753929>>
-
repo owner Hello Aaron, thanks for report.
It's not related to dependency - the problem was caused by the checksum test, which tried to verify the hash length vs. the selected hash type - when the file was not present, dummy 40-bytes value was set, but the default hash is MD5, which uses 32 bytes.
The problem is fixed in the development version.
-
repo owner - removed version
Removing version: 5.9 (automated comment)
- Log in to comment
I should also note, that changing the 'mailq-sub' check to something like this fails as well: