Dropped the 'immediate close-down' of FCGI processes since it didn't work...

Dropped the 'immediate close-down' of FCGI processes since it didn't work consistently and produced bad responses when it didn't. So now a TERM ensures exit after the next request (just as if the process is handling a request when it receives the signal). This means that you'll have to 'nudge' all FCGI processes with a request in order to ensure that they have all reloaded. This can be done by something like ./script/process/repear --nudge 'http://www.myapp.com' --instances 10, which will load the myapp site 10 times (and thus hit all of the 10 FCGI processes once, enough to shut down).

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1867 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 42723e3a
*SVN*
* Added stripping of _id to String#humanize, so "employee_id" becomes "Employee" #1574 [Justin French]
* Factor Fixnum and Bignum extensions into Integer extensions [Nicholas Seckar]
* Hooked #ordinalize into Fixnum and Bignum classes. [Nicholas Seckar, danp]
* Added stripping of _id to humanize, so "employee_id" becomes "Employee" #1574 [Justin French]
* Added Fixnum#ordinalize to turn 1.ordinalize to "1st", 3.ordinalize to "3rd", and 10.ordinalize to "10th" and so on #1724 [paul@cnt.org]
......
*SVN*
* Dropped the 'immediate close-down' of FCGI processes since it didn't work consistently and produced bad responses when it didn't. So now a TERM ensures exit after the next request (just as if the process is handling a request when it receives the signal). This means that you'll have to 'nudge' all FCGI processes with a request in order to ensure that they have all reloaded. This can be done by something like ./script/process/repear --nudge 'http://www.myapp.com' --instances 10, which will load the myapp site 10 times (and thus hit all of the 10 FCGI processes once, enough to shut down).
*0.13.1* (11 July, 2005)
* Look for app-specific generators in RAILS_ROOT/generators rather than the clunky old RAILS_ROOT/script/generators. Nobody really uses this feature except for the unit tests, so it's a negligible-impact change. If you want to work with third-party generators, drop them in ~/.rails/generators or simply install gems.
......
......@@ -10,7 +10,6 @@ class RailsFCGIHandler
}
attr_reader :when_ready
attr_reader :processing
attr_accessor :log_file_path
attr_accessor :gc_request_period
......@@ -28,7 +27,6 @@ def self.process!(*args, &block)
# takes this instance as an argument for further configuration.
def initialize(log_file_path = nil, gc_request_period = nil)
@when_ready = nil
@processing = false
self.log_file_path = log_file_path || "#{RAILS_ROOT}/log/fastcgi.crash.log"
self.gc_request_period = gc_request_period
......@@ -125,13 +123,8 @@ def install_signal_handler(signal, handler)
end
def graceful_exit_handler(signal)
if processing
dispatcher_log :info, "asked to terminate ASAP"
@when_ready = :exit
else
dispatcher_log :info, "told to terminate NOW"
exit
end
dispatcher_log :info, "asked to terminate ASAP"
@when_ready = :exit
end
def reload_handler(signal)
......@@ -140,13 +133,10 @@ def reload_handler(signal)
end
def process_request(cgi)
@processing = true
Dispatcher.dispatch(cgi)
rescue Object => e
raise if SignalException === e
dispatcher_error(e)
ensure
@processing = false
end
def mark!
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册