forked from defunkt/unicorn
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathKNOWN_ISSUES
51 lines (43 loc) · 2.6 KB
/
KNOWN_ISSUES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
= Known Issues
Occasionally odd {issues}[link:ISSUES.html] arise without a transparent or
acceptable solution. Those issues are documented here.
* When using "preload_app true", with apps using background threads
need to restart them in the after_fork hook because threads are never
shared with child processes. Additionally, any synchronization
primitives (Mutexes, Monitors, ConditionVariables) should be
reinitialized in case they are held during fork time to avoid
deadlocks. The core Ruby Logger class needlessly uses a MonitorMutex
which can be disabled with a {monkey patch}[link:examples/logger_mp_safe.rb]
* Rails 2.3.2 bundles its own version of Rack. This may cause subtle
bugs when simultaneously loaded with the system-wide Rack Rubygem
which Unicorn depends on. Upgrading to Rails 2.3.4 (or later) is
strongly recommended for all Rails 2.3.x users for this (and security
reasons). Rails 2.2.x series (or before) did not bundle Rack and are
should be unnaffected. If there is any reason which forces your
application to use Rails 2.3.2 and you have no other choice, then
you may edit your Unicorn gemspec and remove the Rack dependency.
ref: http://mid.gmane.org/[email protected]
Note: the workaround described in the article above only made
the issue more subtle and we didn't notice them immediately.
* Installing "unicorn" as a system-wide Rubygem and using the
{isolate}[http://github.com/jbarnette/isolate] gem may cause issues if
you're using any of the bundled application-level libraries in
unicorn/app/* (for compatibility with CGI-based applications, Rails <=
2.2.2, or ExecCgi). For now workarounds include:
* installing the same version of unicorn as a system-wide Rubygem
_and_ isolating unicorn as well.
* explicitly setting RUBYLIB or $LOAD_PATH to include any gem path
where the unicorn gem is installed (e.g.
/usr/lib/ruby/gems/1.8/gems/unicorn-VERSION/lib)
* WONTFIX: code reloading and restarts with Sinatra 0.3.x (and likely older
versions) apps is broken. The workaround is to force production
mode to disable code reloading as well as disabling "run" in your
Sinatra application:
set :env, :production
set :run, false
Since this is no longer an issue with Sinatra 0.9.x apps, this will not be
fixed on our end. Since Unicorn is itself the application launcher, the
at_exit handler used in old Sinatra always caused Mongrel to be launched
whenever a Unicorn worker was about to exit.
Also remember we're capable of replacing the running binary without dropping
any connections regardless of framework :)