about summary refs log tree commit homepage
DateCommit message (Collapse)
2010-10-27unicorn 1.0.2 v1.0.2 maint
This is the latest maintenance release of the 1.0.x series. All users are encouraged to upgrade to 1.1.x stable series and report bugs there. Shortlog of changes since 1.0.1: Eric Wong (8): SIGTTIN works after SIGWINCH fix delays in signal handling Rakefile: don't post freshmeat on empty changelogs Rakefile: capture prerelease tags configurator: use "__send__" instead of "send" configurator: reloading with unset values restores default gemspec: depend on Isolate 3.0.0 for dev doc: stop using deprecated rdoc CLI options
2010-10-27doc: stop using deprecated rdoc CLI options
-N and -a switches no longer exist in rdoc 2.5 (cherry picked from commit 054c7df93db61839648925cfd881ae880709a210)
2010-10-27gemspec: depend on Isolate 3.0.0 for dev
No reason to not use the latest and greatest! (cherry picked from commit 570a57c07fd8c3d24b7337637e0dd30136b3a11a) Conflicts: unicorn.gemspec
2010-10-27configurator: reloading with unset values restores default
If a configuration directive is set at startup and later unset, it correctly restores the original default value as if it had never been set in the first place. This applies to the majority of the configuration values with a few exceptions: * This only applies to stderr_path and stdout_path when daemonized (the usual case, they'll be redirected to "/dev/null"). When NOT daemonized, we cannot easily redirect back to the original stdout/stderr destinations. * Unsetting working_directory does not restore the original working directory where Unicorn was started. As far as we can tell unsetting this after setting it is rarely desirable and greatly increases the probability of user error. (cherry picked from commit 51b2b90284000aee8d79b37a5406173c45ae212d)
2010-10-27configurator: use "__send__" instead of "send"
It's less ambiguous since this is a network server after all. (cherry picked from commit f62c5850d7d17d7b5e301a494f8bdf5be3674411)
2010-10-27Rakefile: capture prerelease tags
Since we do those, now. (cherry picked from commit 1d1a2b1bd5bdd89f774f19bf8ad24c2f5f8a2d4c)
2010-10-27Rakefile: don't post freshmeat on empty changelogs
We don't want to flood or monopolize freshmeat. (cherry picked from commit 1ad510d645e0c84c8d352ac0deaeefa75240ea94)
2010-10-27fix delays in signal handling
There is no need to loop in the master_sleep method at all, as the rest of the code is designed to function even on interrupted sleeps. This change is included as part of a larger cleanup in master. (commit bdc79712e5ac53d39c51e80dfe50aff950e5053f)
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 e75ee7615f9875db314a6403964e7b69a68b0521)
2010-07-13unicorn 1.0.1 - bugfixes only v1.0.1
The first maintenance release of 1.0.x, this release is primarily to fix a long-standing bug where the original PID file is not restored when rolling back from a USR2 upgrade. Presumably most upgrades aren't rolled back, so it took over a year to notice this issue. Thanks to Lawrence Pit for discovering and reporting this issue. There is also a pedantic TeeInput bugfix which shouldn't affect real apps from the 1.1.x series and a test case fix for OSX, too.
2010-07-13SIGHUP deals w/ dual master pid path scenario
As described in our SIGNALS documentation, sending SIGHUP to the old master (to respawn SIGWINCH-ed children) while the new master (spawned from SIGUSR2) is active is useful for backing out of an upgrade before sending SIGQUIT to the new master. Unfortunately, the SIGHUP signal to the old master will cause the ".oldbin" pid file to be reset to the non-".oldbin" version and thus attempt to clobber the pid file in use by the to-be-terminated new master process. Thanks to the previous commit to prevent redaemonization in the new master, the old master can reliably detect if the new master is active while it is reloading the config file. Thanks to Lawrence Pit for discovering this bug. ref: http://mid.gmane.org/4C3BEACF.7040301@gmail.com (cherry picked from commit c13bec3449396b21795966101367838161612d61)
2010-07-13launcher: do not re-daemonize when USR2 upgrading
This was accidentally enabled when ready_pipe was developed. While re-daemonizing appears harmless in most cases this makes detecting backed-out upgrades from the original master process impossible. (cherry picked from commit 3f0f9d6d72cf17b34c130b86eb933bbc513b24b3)
2010-07-08tee_input: safer record separator ($/) handling
Different threads may change $/ during execution, so cache it at function entry to a local variable for safety. $/ may also be of a non-binary encoding, so rely on Rack::Utils.bytesize to portably capture the correct size. Our string slicing is always safe from 1.9 encoding: both our socket and backing temporary file are opened in binary mode, so we'll always be dealing with binary strings in this class (in accordance to the Rack spec). (cherry picked from commit 1cd698f8c7938b1f19e9ba091708cb4515187939)
2010-06-25test-exec: prefer ENV['PWD'] in working_directory tests
We do an extra check in the application dispatch to ensure ENV['PWD'] is set correctly to match Dir.pwd (even if the string path is different) as this is required for Capistrano deployments. These tests should now pass under OSX where /var is apparently a symlink to /private/var.
2010-06-17unicorn 1.0.0 - yes, this is a real project v1.0.0
There are only minor changes since 0.991.0. For users clinging onto the past, MRI 1.8.6 support has been restored. Users are strongly encouraged to upgrade to the latest 1.8.7, REE or 1.9.1. For users looking towards the future, the core test suite and the Rails 3 (beta) integration tests pass entirely under 1.9.2 preview3. As of the latest rubinius.git[1], Rubinius support is nearly complete as well. Under Rubinius, signals may corrupt responses as they're being written to the socket, but that should be fixable transparently to us[4]. Support for the hardly used, hardly documented[2] embedded command-line switches in rackup config (.ru) files is is also broken under Rubinius. The recently-released Rack 1.2.1 introduced no compatiblity issues[3] in core Unicorn. We remain compatible with all Rack releases starting with 0.9.1 (and possibly before). [1] tested with Rubinius upstream commit cf4a5a759234faa3f7d8a92d68fa89d8c5048f72 [2] lets avoid the Dueling Banjos effect here :x [3] actually, Rack 1.2.1 is broken under 1.8.6. [4] http://github.com/evanphx/rubinius/issues/373
2010-06-17doc: update CONTRIBUTORS
2010-06-17GNUmakefile: allow RSYNC variable to be overridden
This lets me use RSYNC=echo when testing/editing documentation without actually publishing it.
2010-06-17t030[34]: proper temporary UNIX domain socket handling
test-lib handles variables named "*socket" (and "*fifo") differently than ordinary variables.
2010-06-17tests: extra working_directory integration cases
Our fugly code can't handle embedded command-line options in config.ru when using Rubinius yet. So add some related tests to the ones marked RBX_SKIP that don't rely on embedded command-line options.
2010-06-17tests: reenable more tests for rbx
As of rbx commit cf4a5a759234faa3f7d8a92d68fa89d8c5048f72, most of the issues uncovered in our test suite are fixed.
2010-06-17revert rbx-only workaround for IO#reopen
This is fixed upstream in Rubinius by commit b630ad9ddb4544a62e8e2282ba7dc59c4269bad7
2010-06-15workaround rbx not reopening logs to stderr/stdout
While log reopening worked reliably for newly-created File objects in the unit tests, the $stderr and $stdout handles that get redirected did not get reopened reliably under Rubinius. We work around this by relying on Rubinius internals and directly setting the @path instance variable. This is harmless for MRI and should be harmless for other any other Ruby implementations we'll eventually support. ref: http://github.com/evanphx/rubinius/issues/360
2010-06-14tee_input: update documentation for Rack 1.2
Rack 1.2 removed the +size+ method requirement, but we'll still support it since Rack 1.2 doesn't _prohibit_ it, and Rack 1.[01] applications will continue to exist for a while.
2010-06-14local.mk.sample: add 1.8.6-p114 to "full-test"
p114 probably had the most deployments of the 1.8.6 series, and I encountered problems with p399 that don't seem to be triggered with any other Rubies. 1.8.6 is mostly a lost cause, but we shall avoid the rb_str_set_len() regression.
2010-06-14app/exec_cgi: rack.input may not respond to #size
Rack 1.2 no longer requires "rack.input" objects respond to size.
2010-06-12http: fix rb_str_set_len() define for 1.8.6
2010-06-11t0005: Ruby 1.9.2 $LOAD_PATH fix
Ruby 1.9.2 no longer adds the current directory to $LOAD_PATH automatically.
2010-06-11cleanup: use modules were applicable
No point in having namespaces be classes when we never create instances of them...
2010-06-11doc: cleanup rdoc escaping in title, hopefully
2010-06-10unicorn 0.991.0 - startup improvements v0.991.0
The "working_directory" configuration parameter is now handled before config.ru. That means "unicorn" and "unicorn_rails" no longer barfs when initially started outside of the configured "working_directory" where a config.ru is required. A huge thanks to Pierre Baillet for catching this ugly UI inconsistency before the big 1.0 release Thanks to Hongli Lai, out-of-the-box Rails 3 (beta) support should be improved for deployments lacking a config.ru There are more new integration tests, cleanups and some documentation improvements.
2010-06-10test to ensure "unicorn fooapp.rb" respects working_directory
2010-06-10add test for erroring out when config.ru is bad
2010-06-10t0303: extra test for multiple listeners
We share the same array from the original bin/* down into the Configurator.
2010-06-10docs: hopefully clarify preload_app=false behavior
While we're at it, inform people of why they might use a symlink
2010-06-10README: more aggressively kill unnecessary links
... And make the gemspec do minor un-RDoc-ing
2010-06-10examples/init: "upgrade" task waits for completion
This makes the user (sysadmin in this case) more aware if the upgrade fails or doesn't work as intended. This change could be more useful for Rainbows! with its long-running responses.
2010-06-10tests: fix sha1 calculation for non-random_blob
This was commit abc207b2918606867094f2820bab58223e99aac4 from rainbows.git
2010-06-10t0303: set executable bit
2010-06-10my-tap-lib: fix race condition in verbose mode
Don't try to redirect until we know our FIFO consumers are ready for us. This only seems to happen with bash and not ksh...
2010-06-10tests: skip config.ru parsing tests under rbx
eval("...", TOPLEVEL_BINDING) is broken for us in Rubinius (And our code is extremely nasty as well :x) ref: http://github.com/evanphx/rubinius/issues/357
2010-06-10configurator: remove debugging output
2010-06-10fix alt-working_directory behavior for Rails 3
2010-06-10http: cleanups for latest Rubinius
Rubinius now supports rb_str_set_len() and sets -fPIC. We shouldn't check for rb_str_modify() since link-time detection is broken under Rubinius and even 1.8.6 has rb_str_modify().
2010-06-10unicorn_rails: no need to load ActionDispatch::Static
Rails 3 will automatically load it for us.
2010-06-10tests: split out host/port extraction from listen
more tests may use it
2010-06-10tests: update Rails 3 tests to Rails 3 beta4
2010-06-10respect "working_directory" wrt config.ru
Since we added support for the "working_directory" parameter, it often became unclear where/when certain paths would be bound. There are some extremely nasty dependencies and ordering issues when doing this. It's all pretty fragile, but works for now and we even have a full integration test to keep it working. I plan on cleaning this up 2.x.x to be less offensive to look at (Rainbows! and Zbatery are a bit tied to this at the moment). Thanks to Pierre Baillet for reporting this. ref: http://mid.gmane.org/AANLkTimKb7JARr_69nfVrJLvMZH3Gvs1o_KwZFLKfuxy@mail.gmail.com
2010-06-10unicorn_rails: use Kernel#warn instead of $stderr.puts
shorter is better
2010-06-10tests: set NO_PROXY when running tests
It's a good idea to use a caching http_proxy to save bandwidth when isolating gems for different Ruby versions.
2010-06-10Rakefile: isolate to rbx directory
We haven't started using isolate with Rubinius, yet, but we may soon.