On Mon, May 05, 2008 at 11:37:56PM -0400, Brian Weaver wrote: > Hello All, > > Ticket #30 (http://mongrel.rubyforge.org/ticket/30) has a set of > changes to mongrel that I've written on behalf of > my employer, Raritan Computer, Inc. Also, these changes are released > under the existing Ruby license used for Mongrel.
Interesting Brian, glad you finally got the patch into the queue. :-) > The attached patch does just that. It's definitely tailored for a Unix > derivative platform and depends on the functionality of the UNIXSocket > class to pass file descriptors between instances. It works in a > master-slave type of server setup. The "master" is the initial > instance of mongrel rails which goes through its normal initialization > gyrations before forking mulitple "slave" instances to do the actual > rails processing. The server listens on the defined TCP/IP address and > port accepting request (from Apache in our case), determines which > child if any is available, and then hands off the file descriptor for > processing. So, I've just read through this patch, and correct me if I'm wrong, but your patch removes the ability for Mongrel to run as a plain web server right? There also seems to be no tests, so does it just use the existing tests but within the confines of the new forking setup? > The patch isn't without any warts. Due to the way that mongrel > preforms initialization I found it difficult to follow the startup > logic. Because of the convoluted > contortions that occur during startup I was unable to > make deeper changes due to time constraints which means that the > following problem exists. Can you describe what was confusing? The code's not too large so maybe it just wasn't documented really clearly. Also, had you tried just subclassing HttpServer and implementing the alternative mechanism for both the master and slaves? > * If you start the server as root and the configuration causes a > setuid/setgid call to a non-root user then during shutdown mongrel may > not be able to remove its pid file. The pid file management has always been a mess because of ruby's very poor process management, and just the variablility in POSIX anyway. Eventually it'll just have to be a C api that does it right I think. > I'm not aware of any other lurking problem, but I wouldn't be > surprised if one or more exists. > > If you have any further question just send me a note or post to the > list. I'll stay subscribed for a few weeks at least. Also, for the > maintainers: I've added a copyright notice for Raritan Computer on > those files that had extensive changes. I believe that is the correct > way to handle major changes, let me know if I'm incorrect in my > understanding. Actually, and this is a big misnomer among open source folks, the copyright isn't on a file, it's on the project. It's kind of like saying if you edit a page in my book with a marker you get to put your copyright on that page. Additionally there isn't enough change to that file to warrant an entire copyright change as it's still primarily written by myself and other project contributors. What you can do is either officially donate it back to the project under the original copyright with a small notice giving credit to yourself and/or Raritan that you did the master/slave/unixsocket hack, or pull this out into a separate, completely and wholely written by you/raritan file that has none of my code and then release under your own license however you like. Talk it over with your corporate masters, but considering you have an entire product based on other people's generously donated free work it might be a really great nice thing to give back. Makes people all warm and fuzzy and like your products in exchange. --- Evil: http://www.zedshaw.com/ Utu : http://savingtheinternetwithhate.com/ _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users