Commits on Oct 27, 2010
  1. unicorn 1.0.2

    Eric Wong committed Oct 27, 2010
    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
  2. doc: stop using deprecated rdoc CLI options

    Eric Wong committed Oct 27, 2010
    -N and -a switches no longer exist in rdoc 2.5
    (cherry picked from commit 054c7df)
  3. gemspec: depend on Isolate 3.0.0 for dev

    Eric Wong committed Oct 27, 2010
    No reason to not use the latest and greatest!
    (cherry picked from commit 570a57c)
  4. configurator: reloading with unset values restores default

    Eric Wong committed Oct 27, 2010
    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 51b2b90)
  5. configurator: use "__send__" instead of "send"

    Eric Wong committed Oct 27, 2010
    It's less ambiguous since this is a network server after all.
    (cherry picked from commit f62c585)
  6. Rakefile: capture prerelease tags

    Eric Wong committed Oct 6, 2010
    Since we do those, now.
    (cherry picked from commit 1d1a2b1)
  7. Rakefile: don't post freshmeat on empty changelogs

    Eric Wong committed Oct 27, 2010
    We don't want to flood or monopolize freshmeat.
    (cherry picked from commit 1ad510d)
  8. fix delays in signal handling

    Eric Wong committed Oct 27, 2010
    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
    This change is included as part of a larger cleanup in master.
    (commit bdc7971)
Commits on Jul 16, 2010
  1. SIGTTIN works after SIGWINCH

    Eric Wong committed Jul 16, 2010
    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
    (cherry picked from commit e75ee7615f9875db314a6403964e7b69a68b0521)
Commits on Jul 13, 2010
  1. unicorn 1.0.1 - bugfixes only

    Eric Wong committed Jul 13, 2010
    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,
  2. SIGHUP deals w/ dual master pid path scenario

    Eric Wong committed Jul 13, 2010
    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.
    (cherry picked from commit c13bec3)
  3. launcher: do not re-daemonize when USR2 upgrading

    Eric Wong committed Jul 13, 2010
    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
    (cherry picked from commit 3f0f9d6)
Commits on Jul 8, 2010
  1. tee_input: safer record separator ($/) handling

    Eric Wong committed Jul 8, 2010
    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 1cd698f)
Commits on Jun 25, 2010
  1. test-exec: prefer ENV['PWD'] in working_directory tests

    Eric Wong committed Jun 25, 2010
    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
    These tests should now pass under OSX where /var is apparently
    a symlink to /private/var.
Commits on Jun 17, 2010
  1. unicorn 1.0.0 - yes, this is a real project

    Eric Wong committed Jun 17, 2010
    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
    [2] lets avoid the Dueling Banjos effect here :x
    [3] actually, Rack 1.2.1 is broken under 1.8.6.
  2. doc: update CONTRIBUTORS

    Eric Wong committed Jun 17, 2010
  3. GNUmakefile: allow RSYNC variable to be overridden

    Eric Wong committed Jun 17, 2010
    This lets me use RSYNC=echo when testing/editing documentation
    without actually publishing it.
  4. t030[34]: proper temporary UNIX domain socket handling

    Eric Wong committed Jun 17, 2010
    test-lib handles variables named "*socket" (and "*fifo")
    differently than ordinary variables.
  5. tests: extra working_directory integration cases

    Eric Wong committed Jun 17, 2010
    Our fugly code can't handle embedded command-line options in when using Rubinius yet.   So add some related tests
    to the ones marked RBX_SKIP that don't rely on embedded
    command-line options.
  6. tests: reenable more tests for rbx

    Eric Wong committed Jun 17, 2010
    As of rbx commit cf4a5a759234faa3f7d8a92d68fa89d8c5048f72,
    most of the issues uncovered in our test suite are fixed.
  7. revert rbx-only workaround for IO#reopen

    Eric Wong committed Jun 17, 2010
    This is fixed upstream in Rubinius by commit
Commits on Jun 15, 2010
  1. workaround rbx not reopening logs to stderr/stdout

    Eric Wong committed Jun 15, 2010
    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.
Commits on Jun 14, 2010
  1. tee_input: update documentation for Rack 1.2

    Eric Wong committed Jun 14, 2010
    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.
  2. add 1.8.6-p114 to "full-test"

    Eric Wong committed Jun 14, 2010
    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.
  3. app/exec_cgi: rack.input may not respond to #size

    Eric Wong committed Jun 14, 2010
    Rack 1.2 no longer requires "rack.input" objects respond
    to size.
Commits on Jun 12, 2010
  1. http: fix rb_str_set_len() define for 1.8.6

    Eric Wong committed Jun 12, 2010
Commits on Jun 11, 2010
  1. t0005: Ruby 1.9.2 $LOAD_PATH fix

    Eric Wong committed Jun 11, 2010
    Ruby 1.9.2 no longer adds the current directory to $LOAD_PATH
  2. cleanup: use modules were applicable

    Eric Wong committed Jun 11, 2010
    No point in having namespaces be classes when we never
    create instances of them...
  3. doc: cleanup rdoc escaping in title, hopefully

    Eric Wong committed Jun 11, 2010
  4. unicorn 0.991.0 - startup improvements

    Eric Wong committed Jun 11, 2010
    The "working_directory" configuration parameter is now handled
    before  That means "unicorn" and "unicorn_rails" no
    longer barfs when initially started outside of the configured
    "working_directory" where a 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
    There are more new integration tests, cleanups and some
    documentation improvements.
  5. add test for erroring out when is bad

    Eric Wong committed Jun 11, 2010
  6. t0303: extra test for multiple listeners

    Eric Wong committed Jun 11, 2010
    We share the same array from the original bin/* down
    into the Configurator.
  7. docs: hopefully clarify preload_app=false behavior

    Eric Wong committed Jun 11, 2010
    While we're at it, inform people of why they might use
    a symlink
  8. README: more aggressively kill unnecessary links

    Eric Wong committed Jun 11, 2010
    ... And make the gemspec do minor un-RDoc-ing