[Mongrel] [ANN] Another mongrel_cluster prerelease 1.0.1.1

Bradley Taylor bradley at railsmachine.com
Wed Apr 11 14:48:50 EDT 2007


Michael A. Schoen wrote:

> Just a question: why does a cluster restart do a stop and a start, 
> rather than an actual restart on each Mongrel? A restart is "nicer", and 
> handles much better cases in which a Mongrel can't (or shouldn't) stop 
> immediately. 

Originally, "cluster::restart" called "mongrel_rails restart". 
Unfortunately, this is not reliable for major changes and doing 
stop/start is the only way to guarantee that code changes will be applied.

 From the mongrel code (rails.rb, line 164):
# Reloads Rails.  This isn't too reliable really, but it
# should work for most minimal reload purposes.  The only reliable
# way to reload properly is to stop and then start the process.

I don't think it is entirely true to say that restart is "nicer" than 
stop/start. 'stop' waits for the current request to finish unless you 
use --force. In the context of a cluster, other cluster members will 
handle requests during the stop/start cycle.

 > The current stop/start approach means that the start often
 > fails, because the stop hasn't actually shutdown the Mongrel yet.
 >

It is possible that start will be called before the process is gone. 
I'll think about adding some sort of check in cluster::restart to verify 
the process is gone before calling start.

If your requests take a long time to complete, you might end up having 
other problems unless you have loads of ram and a million mongrels in 
your cluster.

 > Would it be possible to make doing an actual restart an option? Or
 > another command that does a true restart?

No, because it's unreliable.

Bradley




More information about the Mongrel-users mailing list