[Mongrel] [ANN] Mongrel 0.3.13.4 -- PIDs Work, Win32 Gem

Zed Shaw zedshaw at zedshaw.com
Mon Aug 14 03:02:03 EDT 2006


Alright, this time a small announce going out to *just* the mongrel list
so I can get some early testing.

There's a new pre-release of 0.3.13.4 out that includes the win32
version of the gem.

** WIN32 USERS SHOULD INSTALL THIS AND TEST.***
***** BUT NOT ON PRODUCTION SYSTEMS. ******

As usual, you install it with:

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

And this time pick the *right* one for your system.


CHANGES

* All the outstanding bugs on the rubyforge bug list are now closed off.
Reopen any that are not really fixed.
* PID files are found when stop/restart and this is now part of the full
test suite.
* HTTP headers with no spacing at all are now accepted for real I
promise and with a test to make sure.
* Fixes a *major* problem with how output was processed and Rails
locking (I blame the stupid Katana patch, but not really).
* FreeBSD 6.1 now throws a brand new Errno exception for closed sockets
that nobody else throws.  This has caused me to sprinkle "rescue Object"
after every socket.close to make sure that--yes--the socket really
closes.  If anyone wants to try and help changing Ruby's Socket from
"Ultimate Errno Randomness Generator" into something sane then let me
know because it's seriously pissing me the hell off.


LOCKING

Previously I was under the delusion that Mongrel was running rails and
then sending the response outside of any locking.  This wasn't really
true for various complex reasons (mainly that I'm a dumbass) but now
this is the case.

Since most coders cannot get their heads around this to save their lives
(myself included), I've done this diagram which seems to help:

B-E-F-O-R-E 0.3.13.4
request -> lock -> rails -> response -> unlock -> done

A-F-T-E-R 0.3.13.4
request -> lock -> rails -> unlock -> response -> done

This also probably fixes people who's Mongrels would lock up sometimes
as previously there was a rare chance that if a socket (remember the
randomness) got stuck then the process would lock up.  Now only one
thread locks up (which is still a problem).

Please test this release on everything you can and shoot me back
results.

-- 
Zed A. Shaw
http://www.zedshaw.com/
http://mongrel.rubyforge.org/
http://www.railsmachine.com/ -- Need Mongrel support?



More information about the Mongrel-users mailing list