added traces to worker. fixed a trace on runner

This commit is contained in:
Nick Gauthier 2010-02-04 11:08:48 -05:00
parent ef7f18c60d
commit aa4a936f09
2 changed files with 18 additions and 19 deletions

View File

@ -74,7 +74,7 @@ module Hydra #:nodoc:
@io.write Ping.new @io.write Ping.new
end end
rescue IOError => ex rescue IOError => ex
$stderr.write "Runner lost Worker" trace "Runner lost Worker"
@running = false @running = false
end end
end end
@ -92,11 +92,9 @@ module Hydra #:nodoc:
eval(c.first) eval(c.first)
end end
rescue NameError rescue NameError
# $stderr.write "Could not load [#{c.first}] from [#{f}]\n" trace "Could not load [#{c.first}] from [#{f}]"
nil
rescue SyntaxError rescue SyntaxError
# $stderr.write "Could not load [#{c.first}] from [#{f}]\n" trace "Could not load [#{c.first}] from [#{f}]"
nil
end end
end end
return klasses.select{|k| k.respond_to? 'suite'} return klasses.select{|k| k.respond_to? 'suite'}

View File

@ -8,6 +8,7 @@ module Hydra #:nodoc:
# network. # network.
class Worker class Worker
include Hydra::Messages::Worker include Hydra::Messages::Worker
traceable('WORKER')
# Create a new worker. # Create a new worker.
# * io: The IO object to use to communicate with the master # * io: The IO object to use to communicate with the master
# * num_runners: The number of runners to launch # * num_runners: The number of runners to launch
@ -52,10 +53,10 @@ module Hydra #:nodoc:
# the worker to send shutdown messages to its runners. # the worker to send shutdown messages to its runners.
def shutdown def shutdown
@running = false @running = false
$stdout.write "WORKER| Notifying #{@runners.size} Runners of Shutdown\n" if @verbose trace "Notifying #{@runners.size} Runners of Shutdown"
@runners.each do |r| @runners.each do |r|
$stdout.write "WORKER| Sending Shutdown to Runner\n" if @verbose trace "Sending Shutdown to Runner"
$stdout.write " | #{r.inspect}\n" if @verbose trace "\t#{r.inspect}"
r[:io].write(Shutdown.new) r[:io].write(Shutdown.new)
end end
Thread.exit Thread.exit
@ -64,7 +65,7 @@ module Hydra #:nodoc:
private private
def boot_runners(num_runners) #:nodoc: def boot_runners(num_runners) #:nodoc:
$stdout.write "WORKER| Booting #{num_runners} Runners\n" if @verbose trace "Booting #{num_runners} Runners"
num_runners.times do num_runners.times do
pipe = Hydra::Pipe.new pipe = Hydra::Pipe.new
child = Process.fork do child = Process.fork do
@ -74,12 +75,12 @@ module Hydra #:nodoc:
pipe.identify_as_parent pipe.identify_as_parent
@runners << { :pid => child, :io => pipe, :idle => false } @runners << { :pid => child, :io => pipe, :idle => false }
end end
$stdout.write "WORKER| #{@runners.size} Runners booted\n" if @verbose trace "#{@runners.size} Runners booted"
end end
# Continuously process messages # Continuously process messages
def process_messages #:nodoc: def process_messages #:nodoc:
$stdout.write "WORKER| Processing Messages\n" if @verbose trace "Processing Messages"
@running = true @running = true
Thread.abort_on_exception = true Thread.abort_on_exception = true
@ -89,7 +90,7 @@ module Hydra #:nodoc:
@listeners.each{|l| l.join } @listeners.each{|l| l.join }
@io.close @io.close
$stdout.write "WORKER| Done processing messages\n" if @verbose trace "Done processing messages"
end end
def process_messages_from_master def process_messages_from_master
@ -98,15 +99,15 @@ module Hydra #:nodoc:
begin begin
message = @io.gets message = @io.gets
if message if message
$stdout.write "WORKER| Received Message from Master\n" if @verbose trace "Received Message from Master"
$stdout.write " | #{message.inspect}\n" if @verbose trace "\t#{message.inspect}"
message.handle(self) message.handle(self)
else else
$stdout.write "WORKER| Nothing from Master, Pinging\n" if @verbose trace "Nothing from Master, Pinging"
@io.write Ping.new @io.write Ping.new
end end
rescue IOError => ex rescue IOError => ex
$stderr.write "Worker lost Master\n" if @verbose trace "Worker lost Master"
Thread.exit Thread.exit
end end
end end
@ -120,12 +121,12 @@ module Hydra #:nodoc:
begin begin
message = r[:io].gets message = r[:io].gets
if message if message
$stdout.write "WORKER| Received Message from Runner\n" if @verbose trace "Received Message from Runner"
$stdout.write " | #{message.inspect}\n" if @verbose trace "\t#{message.inspect}"
message.handle(self, r) message.handle(self, r)
end end
rescue IOError => ex rescue IOError => ex
$stderr.write "Worker lost Runner [#{r.inspect}]\n" if @verbose trace "Worker lost Runner [#{r.inspect}]"
Thread.exit Thread.exit
end end
end end