[ANN] unicorn 3.6.0 - small fixes, PRNG workarounds

Eric Wong normalperson at yhbt.net
Thu Apr 21 02:56:49 EDT 2011


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:

* http://unicorn.bogomips.org/
* mongrel-unicorn at rubyforge.org
* git://bogomips.org/unicorn.git

Eric Wong

More information about the mongrel-unicorn mailing list