MongoDB rc.d script fails when authentication is required
Issue
the MongoDb rc.d script relies on the mongostat tool to check whether the daemon starts up, but does not support authentication. This is the offending code inside /etc/init.d/mongod:
rh_status() {
local p a
# run checks to determine if the service is running or use generic status
status -p ${pidfile} $prog
# Grab address
a=$(grep '^[[:space:]]*bind_ip' $configfile)
a=$(_trim "$a")
[ -z "$a" || "$a" = "0.0.0.0" ] && a=127.0.0.1
# Grab port
p=$(grep '^[[:space:]]*port' $configfile)
p=$(_trim "$p")
[ -z "$p" ] && p=27017
netstat -ln | grep -q "$a:$p"
[ $? -eq 0 ] || return 1
echo "listening on $a:$p"
# Check db
mongostat -n 1 -h $a --port $p &> /dev/null
[ $? -ne 0 ] && return 1
echo "connection test successful"
}
The problem lies in the call to mongostat.
Environment
- Red Hat Enterprise Linux OpenStack Platform 4.0 (Havana) for RHEL 6.
- mongodb version before mongodb-2.4.6-8.el6ost.
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.