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