[Mongrel] reaper is not restarting mongrel with the latest release path?? (but rather an earlier releases path)

Greg Hauptmann greg.hauptmann.ruby at gmail.com
Mon Sep 8 00:39:40 EDT 2008


Hi,

I've tracked my "cap deploy" problems down to the fact that (at least
with the unix user I've created for use with capistrano) when
"script/process/reaper" is run, whilst it restarts the ruby process
the resulting ruby process itself has a path that reflects the
previous "release" path, not the latest one that was put in place as a
result of capistrano.  Note that the link (created by ln ...etc) is
correct, so it seems "cap deploy" did it's job correctly except that
the "reaper" call when it restarts the ruby processes does use the
latest "current" path.   If I log onto the prod server with this user
and manually run "reaper" the same issue occurs.

Any ideas?

Also, I can't quite see in the reaper code in rails how it actually
repopulates the PID file with the new PID number after a restart? Does
mongrel itself do this when it received the "kill -s USR2"?

=== standard out ======

Macintosh-2:myequity greg$ cap deploy --debug
 * executing `deploy'
 * executing `deploy:update'
 ** transaction: start
 * executing `deploy:update_code'
 * executing "svn checkout -q  -r85 http://10.1.1.1:3690/svn/myequity/trunk
/u/apps/myequity/releases/20080908032908 && (echo 85 > /u/apps/
myequity/releases/20080908032908/REVISION)"
Preparing to execute command: svn checkout -q  -r85
http://10.1.1.1:3690/svn/myequity/trunk /u/apps/myequity/releases/
20080908032908 && (echo 85 > /u/apps/myequity/releases/20080908032908/
REVISION)
Execute ([Yes], No, Abort) ?  |y|  y
  servers: ["10.1.1.1"]
Password:
  [callagga at 10.1.1.1] executing command
  command finished
 * executing `deploy:finalize_update'
 * executing "chmod -R g+w /u/apps/myequity/releases/20080908032908"
Preparing to execute command: chmod -R g+w /u/apps/myequity/releases/
20080908032908
Execute ([Yes], No, Abort) ?  |y|  y
  servers: ["10.1.1.1"]
  [callagga at 10.1.1.1] executing command
  command finished
 * executing "rm -rf /u/apps/myequity/releases/20080908032908/log /u/
apps/myequity/releases/20080908032908/public/system /u/apps/myequity/
releases/20080908032908/tmp/pids &&\n      mkdir -p /u/apps/myequity/
releases/20080908032908/public &&\n      mkdir -p /u/apps/myequity/
releases/20080908032908/tmp &&\n      ln -s /u/apps/myequity/shared/
log /u/apps/myequity/releases/20080908032908/log &&\n      ln -s /u/
apps/myequity/shared/system /u/apps/myequity/releases/20080908032908/
public/system &&\n      ln -s /u/apps/myequity/shared/pids /u/apps/
myequity/releases/20080908032908/tmp/pids"
Preparing to execute command:       rm -rf /u/apps/myequity/releases/
20080908032908/log /u/apps/myequity/releases/20080908032908/public/
system /u/apps/myequity/releases/20080908032908/tmp/pids &&
    mkdir -p /u/apps/myequity/releases/20080908032908/public &&
    mkdir -p /u/apps/myequity/releases/20080908032908/tmp &&
    ln -s /u/apps/myequity/shared/log /u/apps/myequity/releases/
20080908032908/log &&
    ln -s /u/apps/myequity/shared/system /u/apps/myequity/releases/
20080908032908/public/system &&
    ln -s /u/apps/myequity/shared/pids /u/apps/myequity/releases/
20080908032908/tmp/pids
Execute ([Yes], No, Abort) ?  |y|  y
  servers: ["10.1.1.1"]
  [callagga at 10.1.1.1] executing command
  command finished
 * executing "find /u/apps/myequity/releases/20080908032908/public/
images /u/apps/myequity/releases/20080908032908/public/stylesheets /u/
apps/myequity/releases/20080908032908/public/javascripts -exec touch -
t 200809080329.22 {} ';'; true"
Preparing to execute command: find /u/apps/myequity/releases/
20080908032908/public/images /u/apps/myequity/releases/20080908032908/
public/stylesheets /u/apps/myequity/releases/20080908032908/public/
javascripts -exec touch -t 200809080329.22 {} ';'; true
Execute ([Yes], No, Abort) ?  |y|  y
  servers: ["10.1.1.1"]
  [callagga at 10.1.1.1] executing command
  command finished
 * executing `deploy:symlink'
 * executing "rm -f /u/apps/myequity/current && ln -s /u/apps/
myequity/releases/20080908032908 /u/apps/myequity/current"
Preparing to execute command: rm -f /u/apps/myequity/current && ln -s /
u/apps/myequity/releases/20080908032908 /u/apps/myequity/current
Execute ([Yes], No, Abort) ?  |y|  y
  servers: ["10.1.1.1"]
  [callagga at 10.1.1.1] executing command
  command finished
 ** transaction: commit
 * executing `deploy:restart'
 * executing "sudo -p 'sudo password: ' -u callagga /u/apps/myequity/
current/script/process/reaper"
Preparing to execute command: sudo -p 'sudo password: ' -u callagga /u/
apps/myequity/current/script/process/reaper
Execute ([Yes], No, Abort) ?  |y|  y
  servers: ["10.1.1.1"]
  [callagga at 10.1.1.1] executing command
*** [err :: callagga at 10.1.1.1]
 ** [out :: callagga at 10.1.1.1] Restarting 19776
  command finished
Macintosh-2:myequity greg$

====================

callagga 20557  2.8  5.3  29928 27112 ?        S    13:29   0:03 ruby /
usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails start -d -a
0.0.0.0 -p 3001 -P /u/apps/myequity/releases/20080908032044/tmp/pids/
dispatch.3001.pid -e production -c /u/apps/myequity/releases/
20080908032044 -l /u/apps/myequity/releases/20080908032044/log/
mongrel.log
=====================


More information about the Mongrel-users mailing list