about summary refs log tree commit homepage
tag namev3.6.0 (b8b091d499ea98ca59acae2593eb3ceeb9d0380b)
tag date2011-04-21 06:46:08 +0000
tagged byEric Wong <normalperson@yhbt.net>
tagged objectcommit 2aabf90ca5...
unicorn 3.6.0 - small fixes, PRNG workarounds
Mainly small fixes, improvements, and workarounds for fork() issues
with pseudo-random number generators shipped with Ruby (Kernel#rand,
OpenSSL::Random (used by SecureRandom and also by Rails).

The PRNG issues are documented in depth here (and links to Ruby Redmine):


If you're too lazy to upgrade, you can just do this in your after_fork

  after_fork do |server,worker|
    tmp = srand
    OpenSSL::Random.seed(tmp.to_s) if defined?(OpenSSL::Random)

There are also small log reopening (SIGUSR1) improvements:

* relative paths may also be reopened, there's a small chance this
  will break with a handful of setups, but unlikely.  This should
  make configuration easier especially since the "working_directory"
  configurator directive exists.  Brought up by Matthew Kocher:

* workers will just die (and restart) if log reopening fails for
  any reason (including user error).  This is to workaround the issue
  reported by Emmanuel Gomez: