lib/asir/main.rb in asir-1.2.10 vs lib/asir/main.rb in asir-1.2.11
- old
+ new
@@ -96,11 +96,11 @@
$stderr.puts " adjective = #{adjective.inspect}"
$stderr.puts " object = #{object.inspect}"
$stderr.puts " sel = #{sel.inspect}"
end
send(sel)
- rescue ::Exception => exc
+ rescue ::StandardError => exc
$stderr.puts "#{log_str} ERROR\n#{exc.inspect}\n #{exc.backtrace * "\n "}"
self.exit_code += 1
raise
nil
end
@@ -259,10 +259,11 @@
end
pid
end
def write_pid_file! pid
+ log "pid_file #{pid_file}"
File.open(pid_file, "w+") { | o | o.puts pid }
File.chmod(0666, pid_file) rescue nil
end
def run_server! cmd = nil
@@ -297,20 +298,21 @@
ensure
lf.puts "#{log_str} finished pid #{$$}"
File.unlink(pid_file) rescue nil
end
self
- rescue ::Exception => exc
+ rescue ::StandardError => exc
msg = "ERROR pid #{$$}\n#{exc.inspect}\n #{exc.backtrace * "\n "}"
log msg, :stderr
raise
self
end
def kill_server!
- log "#{log_str} kill"
pid = server_pid
+ log "#{log_str} pid_file #{pid_file}"
+ log "#{log_str} kill pid #{pid}"
case stop_pid! pid
when :not_running
File.unlink(pid_file) rescue nil
end
rescue ::Exception => exc
@@ -326,12 +328,15 @@
log.puts "#{log_str} #{msg}"
end
end
def server_pid
- File.exist?(pid_file) &&
- File.read(pid_file).chomp!.to_i
+ File.exist?(pid_file) and
+ pid = File.read(pid_file).chomp! and
+ pid = pid.to_i and
+ pid > 1 and
+ pid
end
def _create_transport default_class
config!(:environment)
case transport = config!(:transport)
@@ -377,11 +382,13 @@
transport.after_receive_message = lambda do | transport, state |
message = state.message
$0 = "#{old_arg0} #{transport.message_count} #{message.identifier}"
after_receive_message.call(transport, state)
end
- transport.run_server!
+ transport.with_server_signals! do
+ transport.run_server!
+ end
self
end
def _stop_workers!
workers = worker_pids.dup
@@ -419,15 +426,15 @@
end
def process_running? pid
case pid
when false, nil
+ pid
when Integer
- Process.kill(0, pid)
+ pid > 1 && Process.kill(0, pid) && pid
else
raise TypeError, "expected false, nil, Integer; given #{pid.inspect}"
end
- pid
rescue ::Errno::ESRCH
false
rescue ::Exception => exc
$stderr.puts " DEBUG: process_running? #{pid} => #{exc.inspect}"
false