From 985e2a0be95709ac064c57f0a9bb385a55937285 Mon Sep 17 00:00:00 2001 From: Sam Kleinman Date: Tue, 19 Jan 2016 11:51:36 -0500 Subject: SERVER-20930 SERVER-20404: clarify sysconfig and default config override --- debian/init.d | 76 +++++++++++++++++++----------------- rpm/init.d-mongod | 16 ++++---- rpm/init.d-mongod.suse | 16 ++++---- rpm/mongod.sysconfig | 7 +++- rpm/mongodb-enterprise-unstable.spec | 4 +- rpm/mongodb-enterprise.spec | 4 +- rpm/mongodb-org-unstable.spec | 4 +- rpm/mongodb-org.spec | 4 +- 8 files changed, 70 insertions(+), 61 deletions(-) diff --git a/debian/init.d b/debian/init.d index 8d6b2c26160..a2b525a7b80 100644 --- a/debian/init.d +++ b/debian/init.d @@ -28,20 +28,20 @@ # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: An object/document-oriented database -# Description: MongoDB is a high-performance, open source, schema-free +# Description: MongoDB is a high-performance, open source, schema-free # document-oriented data store that's easy to deploy, manage # and use. It's network accessible, written in C++ and offers # the following features: -# +# # * Collection oriented storage - easy storage of object- # style data # * Full index support, including on inner objects # * Query profiling # * Replication and fail-over support -# * Efficient storage of binary data including large +# * Efficient storage of binary data including large # objects (e.g. videos) # * Automatic partitioning for cloud-level scalability -# +# # High performance, scalability, and reasonable depth of # functionality are the goals for the project. ### END INIT INFO @@ -58,9 +58,12 @@ CONF=/etc/mongod.conf PIDFILE=/var/run/$NAME.pid ENABLE_MONGOD=yes -# Include mongodb defaults if available +# Include mongodb defaults if available. +# All variables set before this point can be overridden by users, by +# setting them directly in the defaults file. Use this to explicitly +# override these values, at your own risk. if [ -f /etc/default/$NAME ] ; then - . /etc/default/$NAME + . /etc/default/$NAME fi # Handle NUMA access to CPUs (SERVER-3574) @@ -75,6 +78,7 @@ else DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"} fi + if test ! -x $DAEMON; then echo "Could not find $DAEMON" exit 0 @@ -87,7 +91,7 @@ fi . /lib/lsb/init-functions STARTTIME=1 -DIETIME=10 # Time to wait for the server to die, in seconds +DIETIME=10 # Time to wait for the server to die, in seconds # If this value is set too low you might not # let some servers to die gracefully and # 'restart' will not work @@ -144,7 +148,7 @@ start_server() { --make-pidfile --chuid $DAEMONUSER:$DAEMONGROUP \ --exec $NUMACTL $DAEMON $DAEMON_OPTS errcode=$? - return $errcode + return $errcode } stop_server() { @@ -154,32 +158,32 @@ stop_server() { --user $DAEMONUSER \ --exec $DAEMON errcode=$? - return $errcode + return $errcode } force_stop() { # Force the process to die killing it manually - [ ! -e "$PIDFILE" ] && return - if running ; then - kill -15 $pid - # Is it really dead? - sleep "$DIETIME"s - if running ; then - kill -9 $pid - sleep "$DIETIME"s - if running ; then - echo "Cannot kill $NAME (pid=$pid)!" - exit 1 - fi - fi - fi - rm -f $PIDFILE + [ ! -e "$PIDFILE" ] && return + if running ; then + kill -15 $pid + # Is it really dead? + sleep "$DIETIME"s + if running ; then + kill -9 $pid + sleep "$DIETIME"s + if running ; then + echo "Cannot kill $NAME (pid=$pid)!" + exit 1 + fi + fi + fi + rm -f $PIDFILE } case "$1" in start) - log_daemon_msg "Starting $DESC" "$NAME" + log_daemon_msg "Starting $DESC" "$NAME" # Check if it's running first if running ; then log_progress_msg "apparently already running" @@ -190,7 +194,7 @@ case "$1" in # NOTE: Some servers might die some time after they start, # this code will detect this issue if STARTTIME is set # to a reasonable value - [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time + [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time if running ; then # It's ok, the server started and is running log_end_msg 0 @@ -202,12 +206,12 @@ case "$1" in # Either we could not start it log_end_msg 1 fi - ;; + ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" if running ; then # Only stop the server if we see it running - errcode=0 + errcode=0 stop_server || errcode=$? log_end_msg $errcode else @@ -223,14 +227,14 @@ case "$1" in if running; then # If it's still running try to kill it more forcefully log_daemon_msg "Stopping (force) $DESC" "$NAME" - errcode=0 + errcode=0 force_stop || errcode=$? log_end_msg $errcode fi - ;; + ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" - errcode=0 + errcode=0 stop_server || errcode=$? # Wait some sensible amount, some server need this [ -n "$DIETIME" ] && sleep $DIETIME @@ -238,7 +242,7 @@ case "$1" in [ -n "$STARTTIME" ] && sleep $STARTTIME running || errcode=$? log_end_msg $errcode - ;; + ;; status) log_daemon_msg "Checking status of $DESC" "$NAME" @@ -258,10 +262,10 @@ case "$1" in ;; *) - N=/etc/init.d/$NAME - echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2 - exit 1 - ;; + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2 + exit 1 + ;; esac exit 0 diff --git a/rpm/init.d-mongod b/rpm/init.d-mongod index 7ddff0be2eb..cd135c51af6 100755 --- a/rpm/init.d-mongod +++ b/rpm/init.d-mongod @@ -10,28 +10,24 @@ . /etc/rc.d/init.d/functions -# things from mongod.conf get there by mongod reading it - - # NOTE: if you change any OPTIONS here, you get what you pay for: # this script assumes all options are in the config file. CONFIGFILE="/etc/mongod.conf" OPTIONS=" -f $CONFIGFILE" -SYSCONFIG="/etc/sysconfig/mongod" - -PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'` mongod=${MONGOD-/usr/bin/mongod} MONGO_USER=mongod MONGO_GROUP=mongod +# All variables set before this point can be overridden by users, by +# setting them directly in the SYSCONFIG file. Use this to explicitly +# override these values, at your own risk. +SYSCONFIG="/etc/sysconfig/mongod" if [ -f "$SYSCONFIG" ]; then . "$SYSCONFIG" fi -PIDDIR=`dirname $PIDFILEPATH` - # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" @@ -42,6 +38,10 @@ else NUMACTL="" fi +# things from mongod.conf get there by mongod reading it +PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'` +PIDDIR=`dirname $PIDFILEPATH` + start() { # Make sure the default pidfile directory exists diff --git a/rpm/init.d-mongod.suse b/rpm/init.d-mongod.suse index 2d35e8032c3..fae1fb8b3f3 100644 --- a/rpm/init.d-mongod.suse +++ b/rpm/init.d-mongod.suse @@ -16,28 +16,24 @@ . /etc/rc.status rc_reset -# things from mongod.conf get there by mongod reading it - - # NOTE: if you change any OPTIONS here, you get what you pay for: # this script assumes all options are in the config file. CONFIGFILE="/etc/mongod.conf" OPTIONS=" -f $CONFIGFILE" -SYSCONFIG="/etc/sysconfig/mongod" - -PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'` mongod=${MONGOD-/usr/bin/mongod} MONGO_USER=mongod MONGO_GROUP=mongod +# All variables set before this point can be overridden by users, by +# setting them directly in the SYSCONFIG file. Use this to explicitly +# override these values, at your own risk. +SYSCONFIG="/etc/sysconfig/mongod" if [ -f "$SYSCONFIG" ]; then . "$SYSCONFIG" fi -PIDDIR=`dirname $PIDFILEPATH` - # Handle NUMA access to CPUs (SERVER-3574) # This verifies the existence of numactl as well as testing that the command works NUMACTL_ARGS="--interleave=all" @@ -48,6 +44,10 @@ else NUMACTL="" fi +# things from mongod.conf get there by mongod reading it +PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'` +PIDDIR=`dirname $PIDFILEPATH` + start() { diff --git a/rpm/mongod.sysconfig b/rpm/mongod.sysconfig index 5dbfce1dad9..e6d6672d5f3 100644 --- a/rpm/mongod.sysconfig +++ b/rpm/mongod.sysconfig @@ -1 +1,6 @@ -# TODO: add relevant configuration stuff here. +# override configuration values set in the config files + +# CONFIGFILE= +# OPTIONS= +# MONGO_USER= +# MONGO_GROUP= diff --git a/rpm/mongodb-enterprise-unstable.spec b/rpm/mongodb-enterprise-unstable.spec index d62a92b3280..cd4c66607b8 100644 --- a/rpm/mongodb-enterprise-unstable.spec +++ b/rpm/mongodb-enterprise-unstable.spec @@ -183,7 +183,7 @@ if ! /usr/bin/id -g mongod &>/dev/null; then /usr/sbin/groupadd -r mongod fi if ! /usr/bin/id mongod &>/dev/null; then - /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 + /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 fi %post server @@ -212,7 +212,7 @@ fi %{_bindir}/mongod %{_mandir}/man1/mongod.1* /etc/init.d/mongod -/etc/sysconfig/mongod +%config(noreplace) /etc/sysconfig/mongod %attr(0755,mongod,mongod) %dir /var/lib/mongo %attr(0755,mongod,mongod) %dir /var/log/mongodb %attr(0755,mongod,mongod) %dir /var/run/mongodb diff --git a/rpm/mongodb-enterprise.spec b/rpm/mongodb-enterprise.spec index 26a0e001a99..95fd1410306 100644 --- a/rpm/mongodb-enterprise.spec +++ b/rpm/mongodb-enterprise.spec @@ -192,7 +192,7 @@ if ! /usr/bin/id -g mongod &>/dev/null; then /usr/sbin/groupadd -r mongod fi if ! /usr/bin/id mongod &>/dev/null; then - /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 + /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 fi %post server @@ -221,7 +221,7 @@ fi %{_bindir}/mongod %{_mandir}/man1/mongod.1* /etc/init.d/mongod -/etc/sysconfig/mongod +%config(noreplace) /etc/sysconfig/mongod %attr(0755,mongod,mongod) %dir /var/lib/mongo %attr(0755,mongod,mongod) %dir /var/log/mongodb %attr(0755,mongod,mongod) %dir /var/run/mongodb diff --git a/rpm/mongodb-org-unstable.spec b/rpm/mongodb-org-unstable.spec index fa3f4f45ae7..27b2266bd3e 100644 --- a/rpm/mongodb-org-unstable.spec +++ b/rpm/mongodb-org-unstable.spec @@ -182,7 +182,7 @@ if ! /usr/bin/id -g mongod &>/dev/null; then /usr/sbin/groupadd -r mongod fi if ! /usr/bin/id mongod &>/dev/null; then - /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 + /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 fi %post server @@ -211,7 +211,7 @@ fi %{_bindir}/mongod %{_mandir}/man1/mongod.1* /etc/init.d/mongod -/etc/sysconfig/mongod +%config(noreplace) /etc/sysconfig/mongod %attr(0755,mongod,mongod) %dir /var/lib/mongo %attr(0755,mongod,mongod) %dir /var/log/mongodb %attr(0755,mongod,mongod) %dir /var/run/mongodb diff --git a/rpm/mongodb-org.spec b/rpm/mongodb-org.spec index 2c8095046ab..00e30576b5c 100644 --- a/rpm/mongodb-org.spec +++ b/rpm/mongodb-org.spec @@ -192,7 +192,7 @@ if ! /usr/bin/id -g mongod &>/dev/null; then /usr/sbin/groupadd -r mongod fi if ! /usr/bin/id mongod &>/dev/null; then - /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 + /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false -c mongod mongod > /dev/null 2>&1 fi %post server @@ -221,7 +221,7 @@ fi %{_bindir}/mongod %{_mandir}/man1/mongod.1* /etc/init.d/mongod -/etc/sysconfig/mongod +%config(noreplace) /etc/sysconfig/mongod %attr(0755,mongod,mongod) %dir /var/lib/mongo %attr(0755,mongod,mongod) %dir /var/log/mongodb %attr(0755,mongod,mongod) %dir /var/run/mongodb -- cgit v1.2.1