[Mongrel] what is the correct way to stop/start a mongrel instance using monit with mongrel cluster

Zed A. Shaw zedshaw at zedshaw.com
Fri Aug 10 02:41:44 EDT 2007

On Thu, 9 Aug 2007 20:13:27 -0600
"Alexey Verkhovsky" <alexey.verkhovsky at gmail.com> wrote:
> On 8/9/07, Michael Steinfeld <mikeisgreat at gmail.com> wrote:
> > I installed monit but which lead me to find the correct way to
> > start/stop mongrel instances one pid at a time.

> In RubyWorks Production Stack we solve this problem with runit. And it
> was 37 Signals guys who told me about it. runit doesn't require
> service processes to detach themselves, so Mongrel's shortcomings in
> this area become a non-issue.

So let me see if I have this right.  You are saying the PID handling in Mongrel isn't right, but every single patch you've submitted to me in an attempt to fix it has been an ugly shitfuck patch that isn't cross platform and myopically only solves your problem.

Now, I could probably handle that, but then you try to say that the solution is to use runit.  You seen the code in runit?  Let me give you a taste of the if-forrest extravaganza:

    if (verbose)
      strerr_warn5(INFO, "processing: ", ld->name, "/", ld->fnsave, 0);
    if ((fd =open_read(ld->fnsave)) == -1)
      fatal2("unable to open input for processor", ld->name);
    if (fd_move(0, fd) == -1)
      fatal2("unable to move filedescriptor for processor", ld->name);
    ld->fnsave[26] ='t';
    if ((fd =open_trunc(ld->fnsave)) == -1)
      fatal2("unable to open output for processor", ld->name);
    if (fd_move(1, fd) == -1)
      fatal2("unable to move filedescriptor for processor", ld->name);
    if ((fd =open_read("state")) == -1) {
      if (errno == error_noent) {
        if ((fd =open_trunc("state")) == -1)
          fatal2("unable to create empty state for processor", ld->name);
        if ((fd =open_read("state")) == -1)
          fatal2("unable to open state for processor", ld->name);

Oh yeah, that is sooooo fucking great.  This kind of bullshit DJB style code is all over runit.  I wouldn't touch it if it was wrapped in cellophane and I was behind a cement wall accessible only via a BL4 airlock.  Runit is nasty and it amazes me that people use the damn thing at all.

The fact of the matter is, *RUBY* has shitty PID management.  That ultimately, *YOU* are supposed to use Mongrel as a goddamned *LIBRARY* if you want to embed it in your own app server and manage the processes better.  The existing scripts are just to handle the 90% cases of developers running stuff locally or the majority of hosting situations.  It's not like Apache, you are not only allowed to modify it and put it in your own stuff but you are violently encouraged to do it.  Hell there's several books that teach you how and a ton of examples and SIX fucking entire web frameworks that all use Mongrel this way.

Get off your ass and read some code for a change.

Now normally, I wouldn't get bent out of shape, but you represent a company that's using my software to make money (or try to make money, since you guys probably couldn't sell sweet tea to a dying man in the Sahara).  What pisses me off is if you don't like it, then why the hell do you have "Mongrel is stable, reasonably fast, very easy to configure, and can be used in both production and development environments." on your damn web site you leeches?

Oh, because putting that there makes potential customers think you like Mongrel and since they all like mongrel (love even) that gives you some free street cred.

Well Alex and Thoughtworks, I'm going to be giving full control of Mongrel to a group of people who just volunteered.  You're free to use all your powers of Neural Linguistic Programming to convince them to include every dumbass thing you want, and they're free to include it if they want.  There won't be anyone standing in your way and you're free to completely ruin my baby.

And without any more excuses, I feel that it's time you start paying a bit of this free love and work back to the community in the form of some damn code.

Oh, and quit calling it a damn "stack".  It's not a application stack in any way because it doesn't have a complete administrative system that ties it all together.  It's a bunch of RPMs that you either stole or repackaged and you provide nothing more than a basic hosting location for people.  Add some value for once and maybe people might actually pay you for the damn product.

Zed A. Shaw
- Hate: http://savingtheinternetwithhate.com/
- Good: http://www.zedshaw.com/
- Evil: http://yearofevil.com/

More information about the Mongrel-users mailing list