about summary refs log tree commit homepage
DateCommit message (Collapse)
2010-10-06unicorn 2.0.0pre1 - a boring "major" release v2.0.0pre1
Mostly internal cleanups for future versions of Rainbows! and people trying out Rubinius. There are tiny performance improvements for Ruby 1.9.2 users which may only be noticeable with Rainbows! Unicorn 1.1.x users are NOT required to upgrade.
2010-10-06gemspec: depend on newer isolate
We use the latest and greatest whenever possible.
2010-10-06various cleanups and reduce indentation
This also affects some constant scoping rules, but hopefully makes things easier to follow. Accessing ivars (not via accessor methods) are also slightly faster, so use them in the criticial process_client code path.
2010-10-05upgrade to kgio 1.2.0
This provides the kgio_read! method which is like readpartial, only significantly cheaper when a client disconnects on us.
2010-10-05GNUmakefile: fix isolate invocation
again :x
2010-10-05tee_input: use kgio to avoid stack traces on EOF
TeeInput methods may be invoked deep in the stack, so avoid giving them more work to do if a client disconnects due to a bad upload.
2010-10-05http: raise empty backtrace for HttpParserError
It's expensive to generate a backtrace and this exception is only triggered by bad clients. So make it harder for them to DoS us by sending bad requests.
2010-10-05tests: do not invoke isolate in test install dest
We don't want to waste time and bandwidth.
2010-10-05test_tee_input: use a socketpair()
It's a much closer representation of what we'd expect in the real server than a mono-directional UNIX pipe.
2010-10-05test_signals: enable test under Rubinius
The bugs from signal handling were fixed in the Rubinius 1.1.0 release.
2010-10-05tmpio: use super instead of an explicit method
This is for compatibility with Ruby implementations such as Rubinius that use "IO.new" internally inside "IO.open"
2010-10-05update comment about non-blocking accept()
Thanks to kgio, we no longer use accept_nonblock.
2010-10-05util: uindent use less ambiguous constant scoping
This hopefully makes things easier to read and follow.
2010-10-05Unicorn::Util.tmpio => Unicorn::TmpIO.new
This is slightly shorter and hopefully easier to find.
2010-10-05doc: update TODO
This gives us some things to think about.
2010-10-05start using kgio, the kinder, gentler I/O library
This should hopefully make the non-blocking accept() situation more tolerable under Ruby 1.9.2.
2010-10-04split out isolate usage/logic
We'll be using more of Isolate in development.
2010-10-04http_request: reformat and small reorg
This hides more HTTP request logic inside our object.
2010-10-04tee_input: update interface to use HttpRequest
This should ensure we have less typing to do.
2010-10-04http_request: avoid globals
Rainbows! will be able to reuse this.
2010-10-04split out worker to a separate file
This hopefully makes things easier to read, follow, and find since it's mostly documentation...
2010-10-04http_response: avoid singleton method
There's no need for a response class or object since Rack just uses an array as the response. So use a procedural style which allows for easier understanding. We shall also support keepalive/pipelining in the future, too.
2010-10-04Merge commit 'v1.1.4'
* commit 'v1.1.4': unicorn 1.1.4 - small bug fix and doc updates update Rails 3 tests to use Rails 3 final avoid unlinking actively listening sockets doc: update HACKING for documentation contributions doc: update Sandbox document for Bundler TUNING: more on socket buffer sizes
2010-10-04unicorn 1.1.4 - small bug fix and doc updates v1.1.4
We no longer unlinking actively listening sockets upon startup (but continue to unlink dead ones). This bug could trigger downtime and nginx failures if a user makes an error and attempts to start Unicorn while it is already running. Thanks to Jordan Ritter for the detailed bug report leading to this fix. ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com There are also minor documentation and test updates pulled in from master. This is hopefully the last bugfix release of the 1.1.x series.
2010-10-04update Rails 3 tests to use Rails 3 final
Rails 3 is out, and requires no code changes on our end to work (as far as our tests show :) (cherry picked from commit da272fc48ffaa808456fe94dd7a3e01bc9799832)
2010-10-04avoid unlinking actively listening sockets
While we've always unlinked dead sockets from nuked/leftover processes, blindly unlinking them can cause unnecessary failures when an active process is already listening on them. We now make a simple connect(2) check to ensure the socket is not in use before unlinking it. Thanks to Jordan Ritter for the detailed bug report leading to this fix. ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com (cherry picked from commit 1a2363b17b1d06be6b35d347ebcaed6a0c940200)
2010-10-04doc: update HACKING for documentation contributions
We switched to RDoc 2.5.x long ago and this should clarify some documentation preferences I have. (cherry picked from commit 505a9e72d320fe3ae521ceb0f381c1c0f5ae4389)
2010-10-04doc: update Sandbox document for Bundler
Thanks to Lawrence Pit, Jamie Wilkinson, and Eirik Dentz Sinclair. ref: mid.gmane.org/4C8986DA.7090603@gmail.com ref: mid.gmane.org/5F1A02DB-CBDA-4302-9E26-8050C2D72433@efficiency20.com (cherry picked from commit 1a75966a5d1a1f6307ed3386e2f91a28bbb72ca0)
2010-10-04avoid unlinking actively listening sockets
While we've always unlinked dead sockets from nuked/leftover processes, blindly unlinking them can cause unnecessary failures when an active process is already listening on them. We now make a simple connect(2) check to ensure the socket is not in use before unlinking it. Thanks to Jordan Ritter for the detailed bug report leading to this fix. ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com
2010-09-15doc: update HACKING for documentation contributions
We switched to RDoc 2.5.x long ago and this should clarify some documentation preferences I have.
2010-09-15doc: update Sandbox document for Bundler
Thanks to Lawrence Pit, Jamie Wilkinson, and Eirik Dentz Sinclair. ref: mid.gmane.org/4C8986DA.7090603@gmail.com ref: mid.gmane.org/5F1A02DB-CBDA-4302-9E26-8050C2D72433@efficiency20.com
2010-08-30TUNING: more on socket buffer sizes
Large buffers can hurt as well as help. And the difference in real apps that do a lot of things other than I/O often makes it not worth it. (cherry picked from commit f9a7a19a361fd674bab4e2df7e0897015528bba7)
2010-08-30TUNING: more on socket buffer sizes
Large buffers can hurt as well as help. And the difference in real apps that do a lot of things other than I/O often makes it not worth it.
2010-08-30update Rails 3 tests to use Rails 3 final
Rails 3 is out, and requires no code changes on our end to work (as far as our tests show :)
2010-08-30remove nasty ugly hacks at startup
These nasty hacks were breaking Rubinius compatibility. This can be further cleaned up, too.
2010-08-29Merge branch '1.1.x-stable'
* 1.1.x-stable: unicorn 1.1.3 - small bug fixes make log reopens even more robust in threaded apps update Rails3 tests to use 3.0.0rc2 make log reopens more robust in multithreaded apps bin/*: more consistent --help output SIGTTIN works after SIGWINCH
2010-08-28unicorn 1.1.3 - small bug fixes v1.1.3
This release fixes race conditions during SIGUSR1 log cycling. This bug mainly affects Rainbows! users serving static files, but some Rack apps use threads internally even under Unicorn. Other small fixes: * SIGTTIN works as documented after SIGWINCH * --help output from `unicorn` and `unicorn_rails` is more consistent
2010-08-28make log reopens even more robust in threaded apps
A follow-up to 4b23693b9082a84433a9e6c1f358b58420176b27 If multithreaded programming can be compared to juggling chainsaws, then multithreaded programming with signal handlers in play is akin to juggling chainsaws on a tightrope over shark-infested waters. (cherry picked from commit feab35fe531843066db3418598874cf9f9419614)
2010-08-28make log reopens even more robust in threaded apps
A follow-up to 4b23693b9082a84433a9e6c1f358b58420176b27 If multithreaded programming can be compared to juggling chainsaws, then multithreaded programming with signal handlers in play is akin to juggling chainsaws on a tightrope over shark-infested waters.
2010-08-28update Rails3 tests to use 3.0.0rc2
No code changes needed, thankfully. (cherry picked from commit 18968f6aff2fa5ba5a7e3e3d47c9cc05cd6c260d)
2010-08-28update Rails3 tests to use 3.0.0rc2
No code changes needed, thankfully.
2010-08-28make log reopens more robust in multithreaded apps
IOError may occur due to race conditions as another thread may close the file immediately after we call File#closed? to check. Errno::EBADF may occur in some applications that close a file descriptor without notifying Ruby (or if two IO objects refer to the same descriptor, possibly one of them using IO#for_fd). (cherry picked from commit 4b23693b9082a84433a9e6c1f358b58420176b27)
2010-08-28bin/*: more consistent --help output
This fixes a long-standing bug in the output of "unicorn_rails" where the program name was missing. (cherry picked from commit 096afc1a8e958cc09b4ce8b3bfe76ce056c7ed69)
2010-08-28make log reopens more robust in multithreaded apps
IOError may occur due to race conditions as another thread may close the file immediately after we call File#closed? to check. Errno::EBADF may occur in some applications that close a file descriptor without notifying Ruby (or if two IO objects refer to the same descriptor, possibly one of them using IO#for_fd).
2010-08-24bin/*: more consistent --help output
This fixes a long-standing bug in the output of "unicorn_rails" where the program name was missing.
2010-08-07miscellaneous loop and begin cleanups
These are minor changes to remove unnecessary loop nesting and begin usage to reduce our code size and hopefully simplify flow for readers.
2010-08-07log ERROR messages if workers exit with failure
Something is wrong if workers exit with a non-zero status, so we'll increase the log level to help prevent people from missing it.
2010-07-16SIGTTIN works after SIGWINCH
In addition to SIGHUP, it should be possible to gradually bring workers back up (to avoid overloading the machine) when rolling back upgrades after SIGWINCH. Noticed-by: Lawrence Pit ref: http://mid.gmane.org/4C3F8C9F.2090903@gmail.com (cherry picked from commit f1d33c80dd6c5650f960f7087f4e08f809754d34)
2010-07-16SIGTTIN works after SIGWINCH
In addition to SIGHUP, it should be possible to gradually bring workers back up (to avoid overloading the machine) when rolling back upgrades after SIGWINCH. Noticed-by: Lawrence Pit ref: http://mid.gmane.org/4C3F8C9F.2090903@gmail.com
2010-07-13Merge branch '1.1.x-stable'
* 1.1.x-stable: (27 commits) unicorn 1.1.2 - fixing upgrade rollbacks unicorn 1.0.1 - bugfixes only SIGHUP deals w/ dual master pid path scenario launcher: do not re-daemonize when USR2 upgrading SIGHUP deals w/ dual master pid path scenario launcher: do not re-daemonize when USR2 upgrading unicorn 1.1.1 - fixing cleanups gone bad :x tee_input: fix constant resolution for client EOF unicorn 1.1.0 - small changes and cleanups cleanup "stringio" require tee_input: safer record separator ($/) handling prefer "[]" to "first"/"last" where possible tee_input: safer record separator ($/) handling socket_helper: disable documentation socket_helper: cleanup FreeBSD accf_* detection socket_helper: no reason to check for logger method configurator: cleanup RDoc, un-indent configurator: documentation for new accept options socket_helper: move defaults to the DEFAULTS constant doc: recommend absolute paths for -c/--config-file ...