[Mongrel] [ANN] Mongrel Cluster 1.0.1.1 Prerelease: Healing power of the pack!

Bradley Taylor bradley at railsmachine.com
Fri Feb 23 22:23:39 EST 2007


Hello all...

I know its been a while since the last one, but a new prerelease is 
available with a gratuitous increase in version numbers!

gem install mongrel_cluster --source http://mongrel.rubyforge.org/releases/

This one has some new features in it that need to be tested on all unix 
platforms. Please run --clean and cluster::status on every *nix you can 
find. I run linux so the rest are up to you.

Thanks to the following for patches, bug reports, and suggestions:
Corey Donahue, Matt Trott, Donnie Jones, Matte Edens, Joey Geiger, 
Nathan Vack, and others.

New Features:

* The cluster::start, stop and restart commands now support --clean. On 
start, any orphaned pid_files will be removed and any missing members 
will be started. Running members will be ignored. On stop, orphaned 
members (with missing pids) will be killed. On restart, --clean will be 
passed to stop and start. Feel the healing power of the pack!

* cluster::status - Reports the status of the cluster members with 
respect to pid_file and the existence of the process. Returns 0 if ok, 2 
if not.

* --only PORT - run a command only a specific port.

* Capistrano - added variables for the mongrel_rails path, pid_file, 
log_file, clean, and a task for status.

* The init.d script (resources/mongrel_cluster) will now create
/var/run/mongrel_cluster and chown to a defined user on start (see 
file). To fully use this feature, update your cluster yml files to store 
the pidfile in /var/run/mongrel_cluster. This will support cleaning up 
orphaned pidfiles at boot time. For example:
pid_file: /var/run/mongrel_cluster/foo.pid

Changes/Fixes:

* Each mongrel_rails process now has its own log file.
* Improved parsing of log_file and pid_file filenames to support "." in 
the names.
* start/stop messages for each port
* Fixed a parameter bug with mongrel_cluster_ctl calling mongrel_rails.
* Default pid_file is now "tmp/pids/mongrel.pid" to match Rails rake 
tasks. NOTE: I recommend using /var/run/mongrel_cluster so pids are 
properly cleaned up after a crash.

How does it work?

## check status of your cluster
[me at fluxura ~]$ mongrel_rails cluster::status -C 
/etc/mongrel_cluster/fluxura.conf
found pid_file: /var/run/mongrel_cluster/fluxura.8000.pid
mongrel_rails (port: 8000, pid:27286) is running...

found pid_file: /var/run/mongrel_cluster/fluxura.8001.pid
mongrel_rails (port: 8001, pid:27289) is running...

## simulate process death
[me at fluxura ~]$ kill -9 27289

## uh-oh
[me at fluxura ~]$ mongrel_rails cluster::status -C 
/etc/mongrel_cluster/fluxura.conf
found pid_file: /var/run/mongrel_cluster/fluxura.8000.pid
mongrel_rails (port: 8000, pid:27286) is running...

found pid_file: /var/run/mongrel_cluster/fluxura.8001.pid
!! mongrel_rails (port: 8001) is not running...

## start --clean ignores the good process, removes orphaned pid_file,
## and starts new process. healing pack power!
[me at fluxura ~]$ mongrel_rails cluster::start --clean -C 
/etc/mongrel_cluster/fluxura.conf
already started port 8000
missing process: removing /var/run/mongrel_cluster/fluxura.8001.pid
starting port 8001

Give it a go and let me know...

Regards,
Bradley Taylor
http://railsmachine.com



More information about the Mongrel-users mailing list