Your message dated Thu, 21 Jun 2012 15:03:47 +0100
with message-id <[email protected]>
and subject line Re: rabbitmq-server starts 3 processes that do nothing bug wait
has caused the Debian Bug report #646597,
regarding rabbitmq-server starts 3 processes that do nothing bug wait
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
646597: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=646597
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: rabbitmq-server
Version: 2.6.1-1
Severity: minor

After installing and starting rabbitmq-server, a 'ps' will show something
like:
$ ps axw | grep [r]abbit
 2688 ?  Ss 0:00 sh -c RABBITMQ_PID_FILE=/var/run/rabbitmq/pid /usr/sb ...
 2691 ?  S  0:00 /bin/sh /usr/sbin/rabbitmq-server
 2697 ?  S  0:00 su rabbitmq -s /bin/sh -c /usr/lib/rabb ...
 2699 ?  S  0:00 sh -c /usr/lib/rabbitmq/bin/rabbitmq-server
 2700 ?  Sl 0:00 /usr/lib/erlang/erts-5.8.4/bin/beam ...

Above, pids 2688, 2697, 2699 are doing nothing but waiting for other
processes to exit.  They're simply a waste.

In bug #646473, I submitted a fix to get rid of the 'sh -c
RABBITMQ_PID_FILE' process.  The patch below will remove the other 2.

The patch does a couple things:
 * replace the built-in re-quoting with use of 'getopt'.  getopt is
   util-linux, which is 'essential' so this shouldnt be a big deal.
   The previous quoting would have had issues with some arguments.
   getopt understands shell quoting, it makes sense to use it.
 * if perl is installed (the extremely likely case), then 'runas' will
   utilize it to change permissions and then execute the rabbitmq
   server process as the un-priviledged user.
   If perl is not installed, it will take the old 'su' path.
 * use 'exec' if we're already running as the rabbitmq user.

=== modified file 'debian/rabbitmq-script-wrapper'
--- debian/rabbitmq-script-wrapper      2011-02-05 10:21:16 +0000
+++ debian/rabbitmq-script-wrapper      2011-10-24 14:53:46 +0000
@@ -15,24 +15,30 @@
 ##  Copyright (c) 2007-2011 VMware, Inc.  All rights reserved.
 ##

-# Escape spaces and quotes, because shell is revolting.
-for arg in "$@" ; do
-       # Escape quotes in parameters, so that they're passed through cleanly.
-       arg=$(sed -e 's/"/\\"/g' <<-END
-               $arg
-               END
-       )
-       CMDLINE="${CMDLINE} \"${arg}\""
-done
+runas() {
+    local user="$1" cmd=""
+    shift;
+    if command -v perl >/dev/null; then
+        # using perl rather than su stops a 'su' process from hanging around
+        PATH=/usr/local/bin:/usr/bin:/bin; USER=$user; LOGNAME=$user
+        exec perl -e '@pwd = getpwnam("'$user'");
+            $( = $) = $pwd[3]; $< = $> = $pwd[2];
+            $ENV{'HOME'} = $pwd[7]; exec @ARGV' -- "$@"
+    else
+        # use getopt to handle escaping shell variables, and su to change user
+        cmd=$(getopt --shell sh --options "" -- -- "$@") && cmd=${cmd# --} &&
+            exec su "$user" -s /bin/sh -c "exec $cmd"
+    fi
+}

 cd /var/lib/rabbitmq

 SCRIPT=`basename $0`

 if [ `id -u` = 0 ] ; then
-    su rabbitmq -s /bin/sh -c "/usr/lib/rabbitmq/bin/${SCRIPT} ${CMDLINE}"
+    runas rabbitmq "/usr/lib/rabbitmq/bin/${SCRIPT}" "$@"
 elif [ `id -u` = `id -u rabbitmq` ] ; then
-    /usr/lib/rabbitmq/bin/${SCRIPT} "$@"
+    exec /usr/lib/rabbitmq/bin/${SCRIPT} "$@"
 else
     /usr/lib/rabbitmq/bin/${SCRIPT}
     echo


-- System Information:
Debian Release: 6.0.1
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-xen-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages rabbitmq-server depends on:
ii  adduser     3.112+nmu2
ii  erlang-nox  1:14.b.3-dfsg-2
ii  logrotate   3.7.8-6

rabbitmq-server recommends no packages.

rabbitmq-server suggests no packages.

-- no debconf information



--- End Message ---
--- Begin Message ---
Package: rabbitmq-server
Version: 2.8.3-1

The problem of a needless "su" process has been solved by using the
"--background" flag of start-stop-daemon.


--- End Message ---

Reply via email to