-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
-- Delivered by Feed43 service
Mongrel 1.1.3 and 1.0.5 are out. They fix a security flaw in the DirHandler as reported on the list. The flaw may or may not be already mitigated by your proxy configuration, but you should upgrade when you get the chance (or downgrade to 1.0.3).
-- Delivered by Feed43 service
Mongrel 1.1.2 is out. It fixes a few bugs and adds JRuby 1.0.x compatibility.
-- Delivered by Feed43 service
After a huge push, tons of delays to fix bugs and add enhancements, and lots of feedback and contributions from many great people, I’m happy to announce the official release of Mongrel 0.3.13.
This release features lots of documentation, cleaned status output, improved IO processing, a major bug fix for a thread leak, and an improvement in the win32 support.
Read below from past news for all the stuff that was fixed. The main change that win32 folks should be aware of is they have to install a second little gem to get the services support. This is slightly annoying, but the change makes it possible to work independently on the services support and not hold back future Mongrel releases.
Getting The ReleaseFor normal people you should do this:
$ sudo gem install mongrelOf use update. If update don’t work then remove mongrel and re-install.
Win32: Getting The ReleaseFor win32 people, you just do this:
$ gem install mongrel $ gem install mongrel_serviceWhen you do the install, pick the mswin32 version. After you install the mongrel_service you now just use mongrel_rails like everyone else, but you get some new fancy service:: commands.
Reporting BugsSend them to the mailing list and make sure you have your OS, versions, web server, etc.
-- Delivered by Feed43 service
We are days away from the official 0.3.13 release, which will be followed quickly by 0.4 code named Enterprisey Edition 1.2. This latest pre-release update closes off the last of the annoying bugs, and adds one very nasty feature people should check out before we release. Read about Katanas below.
This release doesn't have win32 yet. That'll be uploaded Monday.
GETTING ITBest thing to do is this:
$ gem install daemons $ gem install mongrel --source=http://mongrel.rubyforge.org/releases/ WHAT’S FIXED Fixes a failure of -P to find PID files. Changes the RailsHandler so that only passes GET or HEAD requests to the DirHandler for page caching. Confirms that the new send_file and upload to tempfile works on win32. More tests with big files uploaded on win32 are needed. Lots of documentation on installing, with more to come. Full Apache documentation and information on writing your own snazzy handlers and filters. François SIMOND suggested a check for allow_concurrency and to avoid locking Rails if that’s set to true. I tried it, had to change the patch but I left it in. Read below. Moved some of the “change to user/group” code around so that any Mongrel command can use it. Various code clean-ups and big improvements on the unit test coverage and reporting. Check out the coverage report Lots of thrashing and code review, not much more will come for 0.3.13 unless an obviously broken piece needs work. KATANA SUICIDE CONCURRENCYI resisted doing this, but it’s going to come down sooner or later now that François SIMOND figured it out. Mongrel was protecting the world from the allow_concurrency “feature” but now it lets you kill yourself in obscenely horrible ways.
If you set ActionController::Base.allow_concurrency=true in your config/environments/* then Mongrel will NOT guard the Rails Dispatcher. This means that you’ll get full threaded madness thrashing your Rails controllers until they die horribly slicing themselves into tiny little bits leaving you breathless with the destruction.
Mongrel will obnoxiously warn you about this, and people who try it will NOT get support from me without mad amounts of dough. If you turn this on, and your world comes crashing around your head, then I warned you. Otherwise, go ahead and give it a try and see if that improves things for you.
Enjoy the release, and report those bugs
-- Delivered by Feed43 service
This release is the long awaited 0.3.13 with the fancy file upload and conditional response code. It’s also the start to the big push toward 0.4 Mongrel Enterprisey Edition 1.2.
The big fixes and features in 0.3.13 are:
Lots of documentation being written or already written. Large file uploads are streamed to a temp file rather than ram. (Thanks Why!) Conditional HTTP responses for static files. (Thanks Dan Kubb!) A fix to the start command’s—help so that—num-procs and—timeout are more clear. A fix to the -B option since some idiot decided that they can change the object_id of an object to take a parameter. No longer spews tons of junk to mongrel.log related to invalid parsing or closed client sockets. Documented HttpRequest’s escape, unescape, and query_parse (which were stolen from Camping). Removed some compiler warnings for unused variables in the C extension. Rake now aborts with an obvious message if the http11 extension doesn’t build. Requires ‘resolv-replace’ by default to prevent DNS queries from blocking Mongrel.This release is right now in pre-release state while I work on the documentation. Please grab it and test it with the following:
gem install daemons gem install mongrel --source=http://mongrel.rubyforge.org/releases/As usual, win32 folks will have to wait while I test out this build on Windows.
-- Delivered by Feed43 service
Mongrel 1.1 is out, with JRuby support. Mongrel_cluster is also updated to 1.0.4, with fixes for a Capistrano recipe bug. The URIClassifier has been updated; if you still need the old one (you don’t), it’s available in the mongrel_experimental gem.
-- Delivered by Feed43 service
Mongrel 1.0.4 is out. It fixes three bugs that were introduced in 1.0.3.
-- Delivered by Feed43 service
Mongrel 1.0.3 is finally out with an asspile of bug fixes. It’s now a signed gem, so add the Mongrel public certificate via:
$ wget http://rubyforge.org/frs/download.php/25325/mongrel-public_cert.pem $ gem cert --add mongrel-public_cert.pemNow install via:
$ gem install mongrel --include-dependencies -P HighSecurityManual downloads (gems and tarballs) are at http://mongrel.rubyforge.org/releases/.
Mongrel 1.1 is coming real soon now with JRuby support and a few other things.
-- Delivered by Feed43 service
Alright folks, after nearly a month of pounding and beating up the Mongrel 1.0 RC1 release we’re putting out the official 1.0.1 release. It’s official, so let the chaos spread across the 2.0 web in a destructive blaze viewable from the buckle of Orion’s Belt.
Or, you could just install it with:
$ gem install mongrelIt should properly pull all the required dependencies, and updating your gems should get all the new cool stuff.
What happened to 1.0?We decided to follow official Rails Configuration Management Board Standards and do a silent 1.0 followed by an official 1.0.1. There weren’t any bugs in 1.0 but we didn’t want to break with tradition by not offering a 1.0.1. (Yes, this is a joke.)
Also, this forces the upgrade even for people who grabbed 1.0 from the releases directory.
Information RDoc Coverage Report Report Bugs Documentation Adoptions Books Are You Using It?I want to build up a good list of people who are using Mongrel, no matter what you use it for or where. Any use is a good use. I’ll be filling in documentation and collecting up all the pictures of people’s dogs that I’ve collected, so adding more “mongrel success stories” would be a great addition.
If you wrote a book or mentioned Mongrel in a book then tell me that too. I want to make sure more than just my book is mentioned. I’ll be adding to that list as well.
You can post to the mailing list or email one of the project members. If you ask us to keep the company secret then we won’t post your usage, just keep it for our own records and smug self-satisfaction.
-- Delivered by Feed43 service
After talking with various people deep inside the Ruby machine, I’ve decided to release Mongrel Ruby licensed as of 0.3.13.3. This release should make quite a few people happy. It also means that contributors will hopefully feel better about their contributions and people using Mongrel have more freedom.
This release also fixes a problem with the -B option not actually logging object counts. The object count logging isn’t perfect, but some folks use it.
This release also will print the access log to the screen when you run it in your console. This was requested by a few folks, but I’m not convinced I like it. Try it out and if you do or don’t then mention it in the mailing list.
As usual, do your:
gem install mongrelTo get the release, and if it doesn’t show up then you have to wait for the ruby gems mirror to sync up.
-- Delivered by Feed43 service
This is the release that came out of RailsConf hacking with folks like Rick Olsen, Why The Luck Stiff and other incredibly cool folks. The conference was great, so lets hope this release is good too. The big thing it adds is upload progress in Mongrel. That’s right, Why and Rick pinned me down and made me put it in Mongrel. They worked up the mongrel_upload_progress plugin and are now working on Rails and Camping code to make it happen.
Install from the gem servers with your usual commands:
gem update or gem update mongrel or gem install mongrelBut if you can’t wait for the gem mirrors to update, then you can also do:
gem install mongrel --source=http://mongrel.rubyforge.org/releasesTo get around it all.
-- Delivered by Feed43 service
This is a small release that fixes a little bug, some of the documentation, and adds the new RedirectHandler code and a redirect call for the mongrel.conf files. It’s fresh so don’t rely on it. Everyone should upgrade with the usual gem update command (which tells you it’s “Upgrading…”) and tell me how it works.
This release fixes:
The -C configure file option was busted because of an errant line move. Adds RedirectHandler thanks to Jonas Pfenniger and a new redirect call to Configurator. Fixes mongrel_service documentation which was referring to -r instead of -c and -C instead of -u. Using RedirectHandlerRedirects are pretty simple. You simply have either a new RedirectHandler class you can use or you can put this in a mongrel.conf and pass that to -S:
redirect "/from", "/to"It also accepts regex for the from parameter and can take a block. Play with it if you’re interested.
Deflate And SafariIt looks like Safari does not honor the Content-Encoding: deflate response, so avoid using DeflateFilter until I can find out why. This is why you don’t hand code network protocol parsers.
-- Delivered by Feed43 service

This is the Iron Mongrel release. It is the result of trying to trash Mongrel until it can’t move and then fixing anything that comes up. The testing methods used are:
The end result is a lot of little fixes which make Mongrel more robust against badly behaving clients and possibly against many potential security risks in the future. In general Mongrel 0.3.12.2 behaves more consistently compared to past releases when given random data or maliciously formatted data.
The main changes are related to how IO is processed and how the HTTP parser rejects “bad” input. What the parser now blocks is:
As soon as these conditions are detected the client is disconnected immediately and a log message is printed out listing the IP address, the exact cause, and the data that caused it. I’ll remove the data dump later, but I want people to shoot me valid requests that cause parser errors.
That’s not all though. I’ve started a security page where I’ll publish the results of security threats, tests, and improvements as well as any advice for folks.
This release also features a few little features here and there:
Go ahead and install the usual way: gem install mongrel or gem upgrade
The logo is courtesy court3nay from caboose
-- Delivered by Feed43 service
This release has a small fix for a big problem where people uploading files or using multipart forms would not receive the CONTENT_TYPE and get garbage in their request parameters.
It also adds a few things to help people debug their use of threads within their Ruby on Rails applications. When you run mongrel_rails with the -B (debugging) option Mongrel will report all active threads between each request to log/mongrel_debug/thread.log. If you see reports of Mongrel being overloaded, threads getting killed, or having to wait for Mongrel to shutdown then turn on debugging and look in this log. You most likely are doing something that keeps the thread from exiting.
Mongrel also deals with dead threads much better. First the graceful shutdown will wait 10 seconds for a request to finish before aborting it during the shutdown process. Second it will find processing threads which have taken longer than 60+timeout seconds and kill them. Finally, you can put a value into your own Thread.current and when you use the thread.log you can figure out which controller’s and actions are creating the bad threads.
For example, lets say you see a thread leak. Many times this is caused by trying to make a connection to a remote resource that isn’t there, but you’re not sure. What you do is put this into the suspected controller’s action:
Thread.current[:bad_controller_action] = trueOr some of other tag to differentiate it with the other threads. Then run Mongrel with -B and if you see this in the KEYS list then you know that this is the controller.
Finally, there seems to be a bug in Rails where it is constantly dropping the connection to MySQL. I’ve found this error on nearly everything and it’s worse when you run WEBrick. It seems to get a little better when you set ActionController::Base.allow_concurrency in your config/environments the problem is lessened especially if you run Mongrel.
I’m still trying to determine the cause of this, but if you see this problem please report it to me with what system you are running and how often you see it. Remember, this is a Rails problem not a Mongrel problem since I see it with WEBrick, FastCGI, SCGI, and on Win32, FreeBSD, OSX, and Linux.
-- Delivered by Feed43 service
This release features two major capitulations on Mongrel’s stance of not being a full web server. The first is Mongrel now sports a YAML file with 739 MIME types in it that it will use. The second is Mongrel will now accept clients who insist on doing their requests with “GET http://host:3000/index.html HTTP/1.1” even though it’s not understood by a web server (that’s for proxies people).
It also features a patch to allow for multiple listeners on the request chains, so anyone running mongrel_upload_progress should test it heavily. Finally, we’re getting close to having a clean build for win32, and my apology for holding things back on that.
Install with:
$ gem install fastthread --source=http://mongrel.rubyforge.org/releases $ gem install mongrel --source=http://mongrel.rubyforge.org/releasesIf you get an error about the missing mime_types.yml file then uninstall Mongrel completely and reinstall.
Now, the MIME types are not finalized because, after looking at several sources I found out everyone is completely out to lunch. I gathered together several sources and recommended mime types, merged them all together, sorted and made them unique.
I now have a wiki page entitle The Gnostic MIME Types and I’m going to leave it up for the next 24 hours. People can edit the list to remove what they think are invalid, correct the list, and fight over wiki wars to make the MIME type list.
Whatever survives after the wars will become the official Mongrel MIME types. The ones that remain will be labeled “The Gnostic MIME Types” and simply documented on the Mongrel site so people know what happened.
Let the battle begin!
-- Delivered by Feed43 service
Another fancy release with just a few little changes from yesterday:
Set-Cookie, Set-Cookie2, Warning, and WWW-Authenticate are allowed as duplicate headers. mongrel_rails stop now has a—wait option to go with—force. It will wait for either the given timeout in SECONDS or the PID file to go away. If the PID file goes away it just exits. If the timeout happens then it does a kill -9 on the mongrel process. The MIME types as of 22:00 PDT are included in this release. Five more hours to make changes and complain if you don’t like them. Edit the wiki to make a difference. Default MIME type is application/octet-stream (it was with 0.3.19, but now you all know).Install with:
$ gem install fastthread --source=http://mongrel.rubyforge.org/releases $ gem install mongrel --source=http://mongrel.rubyforge.org/releasesThis release will be what goes in the 1.0 RC1 with the exception of any changes we have to make for win32 and the final version of the MIME types.
Using The ForceMongrel is very conservative when it shuts down. It will wait up to 60 seconds for threads to exit before it finally exits gracefully. Most people don’t understand this so they think Mongrel is stuck, when actually it’s doing what everyone also wants which is not lose a single connection.
The hypocrisy is that people want Mongrel’s shutdown to be “robust” but mean two things. “Robust” when you’ve gotta have Mongrel down NOW to avoid the digg to your fancy social network mashup with potato porn means “down now! now! NOW! don’t wait! NOW!”
“Robust” when you’re rolling out the latest version of your crafted ultimate killer online PIM software your company has banked its reputation on means “very carefully, we don’t want to lose a single byte in any request ever.” Don’t ask me why these people are using HTTP but oh well.
Mongrel is “robust” in the second form. To make Mongrel “robust” in the first form, you use the force:
$ mongrel_rails stop --forceThis sends mongrel a kill -9 and then you must delete the .pid file. If you don’t mongrel now does this when you try to start:
$ mongrel_rails start -e production -d !!! PID file log/mongrel.pid already exists. Mongrel could be running already. Check your log/mongrel.log for errors. !!! Exiting with error. You must stop mongrel and clear the .pid before I’ll attempt a start.So, if you had to force it down, you’ve gotta do the clean-up. Now, let’s say you do want to give most requests a chance to get out, but maybe not the usual time, you can now use—wait with force:
$ mongrel_rails stop --force --wait 15The—wait parameter only makes sense with—force. When you do this, Mongrel will watch the mongrel.pid file for 15 seconds. If the PID file goes away on its own (meaning the process exited anyway) then the stop command is ignored and mongrel_rails exits. If 15 seconds pass by and the PID file is still there then mongrel sends kill -9 to ruin your customer’s day.
But don’t worry, you’ve probably planned your outages and have scheduled this with your customers and have “come back later” pages right?
-- Delivered by Feed43 service
It’s finally here. Mongrel 1.0 RC1 for everyone to test, even the win32 folks. I managed to get everything to build on windows, including fastthread, and even cleaned up the releases source so that it should install cleaner. Win32 will have to try and report problems, as it seems rubygems is real finicky on win32.
UNIX Install with:
$ gem install mongrel --source=http://mongrel.rubyforge.org/releasesWIN32 Install with:
$ gem uninstall mongrel $ gem uninstall gem_plugin $ gem uninstall fastthread $ gem install fastthread --source=http://mongrel.rubyforge.org/releases $ gem install mongrel --source=http://mongrel.rubyforge.org/releases $ gem install mongrel_service --source=http://mongrel.rubyforge.org/releasesIf you have problems with fastthread then skip it, it’s optional on Win32. The win32 process is more involved because there hasn’t been a stable release of it for a while now. That’s why you have to remove everything you can and then re-install.
Make sure that gem_plugin is version 0.2.2 or the whole thing dies.If you have problems installing any of this then add a / to the end of the source:
$ gem install mongrel --source=http://mongrel.rubyforge.org/releases/Yes, that’s retarded, blame the rubygems folks.
You can view the ChangeLog for this latest release in the releases directory like normal. This ChangeLog covers everything done since 0.3.18 but it’s in svn log format so only read it if you’re really uptight.
And as usual, report any bugs. I’ll be posting instructions on using the new mongrel_service when I get them from Luis.
IT’S RC1 FOR A REASONBefore you go off installing this thing in your production servers because you missed the RC1 identifier, remember that RC means “Release Candidate”. Test it to death, use it, report bugs, but only a fool installs it in mission critical situations without fully testing it.
-- Delivered by Feed43 service
Mongrel 1.1.1 is out. It fixes the mongrel_rails restart bug that annoyed everybody, as well as a couple of other things.
-- Delivered by Feed43 service
We’re hard at work getting the hot new win32 service Luis wrote out and ready for production. We’re hoping to have that included in the 1.0 RC1 release we make very soon.
This pre-release is just to make sure that we didn’t step on any toes. Install it with:
$ gem install fastthread --source=http://mongrel.rubyforge.org/releases $ gem install mongrel --source=http://mongrel.rubyforge.org/releasesThe fastthread gem implements mentalguy’s fastthread set of Thread locking alternatives. It is optional, so if it causes you problems, remove it from your gems:
$ gem uninstall fastthreadRestart Mongrel and all will be as it was before. The fastthread stuff will hopefully make Mongrel a little quicker and also reduce it’s memory leakage potential.
I’ve also updated all the stale documentation, including the Apache documentation and added information pimping people’s books including mine. If there’s a book I’ve missed then shoot me an e-mail and I’ll pimp it equally as well. I want as much information for Mongrel as possible available to as many people as possible.
Finally, there’s an Atom feed available which will let people track changes to all the documentation. Try it at http://mongrel.rubyforge.org/feed.atom and let me know how you like it.
Read the ChangeLog
-- Delivered by Feed43 service