summary refs log tree commit homepage
AgeCommit message (Collapse)AuthorFilesLines
2009-05-28unicorn 0.8.1 v0.8.1Eric Wong2-1/+2
2009-05-28Consistent logger assignment for multiple objectsEric Wong1-1/+4
Bah, it's so much busy work to deal with this as configuration option. Maybe I should say we allow any logger the user wants, as long as it's $stderr :P
2009-05-28Avoid instance variables lookups in a critical pathEric Wong1-3/+4
Make us look even better in "Hello World" benchmarks! Passing a third parameter to avoid the constant lookup for the HttpRequest object doesn't seem to have a measurable effect.
2009-05-28Make our HttpRequest object a global constantEric Wong2-3/+8
This should be faster/cheaper than using an instance variable since it's accessed in a critical code path. Unicorn was never designed to be reentrant or thread-safe at all, either.
2009-05-28SIGHUP reloads app even if preload_app is trueEric Wong2-4/+5
This makes SIGHUP handling more consistent across different configurations, and allows togging preload_app to take effect when SIGHUP is issued.
2009-05-28Fix potential race condition in timeout handlingEric Wong1-8/+14
There is a potential race condition in closing the tempfile immediately after SIGKILL-ing the child. So instead just close it when we reap the dead child. Some some versions of Ruby may also not like having the WORKERS hash being changed while it is iterating through each_pair, so dup the hash to be on the safe side (should be cheap, since it's not a deep copy) since kill_worker() can modify the WORKERS hash. This is somewhat of a shotgun fix as I can't reproduce the problem consistently, but oh well.
2009-05-27doc: cleanup summary/descriptionEric Wong2-12/+10
2009-05-26unicorn 0.8.0 v0.8.0Eric Wong2-1/+2
2009-05-26remove trickletest from ManifestEric Wong1-1/+0
2009-05-25Switch to autoload to defer requiresEric Wong3-9/+9
This should prevent Rack from being required too early on so "-I" being passed through the unicorn command-line can modify $LOAD_PATH for Rack
2009-05-25Only refresh the gem list when building the appEric Wong1-4/+6
No point in refreshing the list of gems unless the app can actually be reloaded.
2009-05-25Refresh Gem list when building the appEric Wong1-0/+4
On application reloads, Gems installed by the Ruby instance may be different than when Unicorn started. So when preload_app is false, HUP-ing Unicorn will always refresh the list of Gems before loading the application code.
2009-05-22Merge commit 'v0.7.1'Eric Wong2-1/+2
* commit 'v0.7.1': unicorn 0.7.1 Conflicts: lib/unicorn/const.rb
2009-05-22unicorn 0.7.1 v0.7.1Eric Wong2-1/+2
2009-05-22Merge branch 'benchmark'Eric Wong2-0/+11
* benchmark: Define HttpRequest#reset if missing
2009-05-22Define HttpRequest#reset if missingEric Wong2-0/+11
Newer versions of Unicorn do not include a #reset method
2009-05-22Merge branch '0.7.x-stable'Eric Wong0-0/+0
* 0.7.x-stable: GNUmakefile: glob all files in bin/* Disable formatting for command-line switches test_response: correct OFS test http_response: allow string status codes Enforce minimum timeout at 3 seconds configurator: fix rdoc formatting Preserve 1.9 IO encodings in reopen_logs Fix a warning about @pid being uninitialized TUNING: add a note about somaxconn with UNIX sockets Ignore unhandled master signals in the workers Safer timeout handling and test case app/old_rails: correctly log errors in output Add TUNING document app/exec_cgi: GC prevention Add example init script test_upload: still uncomfortable with 1.9 IO encoding... test_request: enable with Ruby 1.9 now Rack 1.0.0 is out
2009-05-22GNUmakefile: glob all files in bin/*Eric Wong1-2/+4
Easier to maintain and add new executables this way
2009-05-22Disable formatting for command-line switchesEric Wong1-2/+2
Copy and pasting from the RDoc web page and passing "\342\200\224config-file" to the command-line does not work.
2009-05-22test_response: correct OFS testEric Wong1-1/+1
Must have multiple headers to test this effectively
2009-05-22http_response: allow string status codesEric Wong2-1/+9
Rack::Lint says they just have to work when to_i is called on the status, so that's what we'll do.
2009-05-22Enforce minimum timeout at 3 secondsEric Wong1-2/+2
2 seconds is still prone to race conditions under high load. We're intentionally less accurate than we could be in order to reduce syscall and method dispatch overhead.
2009-05-22configurator: fix rdoc formattingEric Wong1-19/+19
2009-05-22Preserve 1.9 IO encodings in reopen_logsEric Wong3-5/+98
Ensure we preserve both internal and external encodings when reopening logs.
2009-05-22Fix a warning about @pid being uninitializedEric Wong1-0/+1
2009-05-22TUNING: add a note about somaxconn with UNIX socketsEric Wong1-0/+4
2009-05-22Ignore unhandled master signals in the workersEric Wong1-1/+1
This makes it easier to use "killall -$SIGNAL unicorn" without having to lookup the correct PID.
2009-05-22Safer timeout handling and test caseEric Wong3-7/+6
Timeouts of less than 2 seconds are unsafe due to the lack of subsecond resolution in most POSIX filesystems. This is the trade-off for using a low-complexity solution for timeouts. Since this type of timeout is a last resort; 2 seconds is not entirely unreasonable IMNSHO. Additionally, timing out too aggressively can put us in a fork loop and slow down the system. Of course, the default is 60 seconds and most people do not bother to change it.
2009-05-22app/old_rails: correctly log errors in outputEric Wong1-2/+2
"out" was an invalid variable in that context...
2009-05-22Add TUNING documentEric Wong3-0/+62
Most of this should be applicable to Mongrel and other web servers, too.
2009-05-22app/exec_cgi: GC preventionEric Wong1-3/+3
Don't allow newly created IO objects to get GC'ed and subsequently close(2)-ed. We're not reopening the {$std,STD}{in,out,err} variables since those can't be trusted to have fileno 1, 2 and 3 respectively.
2009-05-22Add example init scriptEric Wong1-0/+54
This was done in Bourne shell because it's easier for UNIX sysadmins who don't know Ruby to understand and modify. Additionally, it can be used for nginx or anything else that shares compatible signal handling.
2009-05-22test_upload: still uncomfortable with 1.9 IO encoding...Eric Wong1-0/+18
It seems most applications use buffered IO#read instead of IO#sysread. So make sure our encoding is set correctly for buffered IO#read applications, too.
2009-05-22test_request: enable with Ruby 1.9 now Rack 1.0.0 is outEric Wong1-5/+0
2009-05-21GNUmakefile: glob all files in bin/*Eric Wong1-2/+4
Easier to maintain and add new executables this way
2009-05-21Disable formatting for command-line switchesEric Wong1-2/+2
Copy and pasting from the RDoc web page and passing "\342\200\224config-file" to the command-line does not work.
2009-05-13privatize constants only used by old_rails/staticEric Wong2-11/+6
Unicorn proper no longer needs these constants, so don't bother with them.
2009-05-13test_response: correct OFS testEric Wong1-1/+1
Must have multiple headers to test this effectively
2009-05-13http_response: allow string status codesEric Wong2-1/+9
Rack::Lint says they just have to work when to_i is called on the status, so that's what we'll do.
2009-05-13Require Rack for HTTP Status codesEric Wong3-47/+10
Preventing needless duplication since Rack already has these codes for us. Also, put the status codes in HttpResponse since nothing else needs (or should need) them.
2009-05-12Reopen master logs on SIGHUP, tooEric Wong1-0/+1
There may be other logs opened if preload_app is true besides stderr/stdout paths. So err on the safe side and reopen everything.
2009-05-11exec_cgi: don't assume the body#each consumer is a socketEric Wong1-3/+7
If we're using middleware that pushes the body into an array, bad things will happen if we're clobbering the string for each iteration of body#each.
2009-05-11HttpRequest::DEF_PARAMS => HttpRequest::DEFAULTSEric Wong1-14/+14
Give this a more palatable name and unfreeze it, allowing users to modify it more easily.
2009-05-10Remove trickletestEric Wong1-45/+0
This is a very important test for web servers designed to serve slow clients, but Unicorn is not that.
2009-05-10Avoid killing sleeping workersEric Wong1-3/+5
This used to happen on machines that were coming out of suspend/hibernation.
2009-05-10Enforce minimum timeout at 3 secondsEric Wong2-4/+4
2 seconds is still prone to race conditions under high load. We're intentionally less accurate than we could be in order to reduce syscall and method dispatch overhead.
2009-05-10app/exec_cgi: use explicit buffers for read/sysreadEric Wong1-2/+4
This reduces garbage generation to improve performance. Rack 1.0 allows InputWrapper to read with an explicit buffer.
2009-05-10http_request: use Rack::InputWrapper-compatible methodsEric Wong1-7/+5
This allows alternative I/O implementations to be easier to use with Unicorn...
2009-05-10configurator: fix rdoc formattingEric Wong1-19/+19
2009-05-04Preserve 1.9 IO encodings in reopen_logsEric Wong3-5/+98
Ensure we preserve both internal and external encodings when reopening logs.