Changeset 303
- Timestamp:
- 01/03/08 16:23:21 (8 months ago)
- Files:
-
- trunk/framework/meta_pimp.rb (modified) (1 diff)
- trunk/framework/packet_master.rb (modified) (1 diff)
- trunk/lib/backgroundrb.rb (modified) (1 diff)
- trunk/script/backgroundrb (modified) (1 diff)
- trunk/server/master_worker.rb (modified) (9 diffs)
- trunk/server/meta_worker.rb (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/framework/meta_pimp.rb
r294 r303 5 5 # initializer of pimp 6 6 attr_accessor :callback_hash 7 attr_accessor :worker_status, :worker_key 7 attr_accessor :worker_status, :worker_key,:worker_name 8 8 def pimp_init 9 9 @callback_hash ||= {} trunk/framework/packet_master.rb
r286 r303 146 146 t_pimp = Packet::MetaPimp.new(master_write_end,pid,self) 147 147 t_pimp.worker_key = worker_name_key 148 t_pimp.worker_name = t_worker_name 148 149 @live_workers[worker_name_key,master_read_end.fileno] = t_pimp 149 150 end trunk/lib/backgroundrb.rb
r296 r303 57 57 dump_object(p_data,@connection) 58 58 return read_from_bdrb() 59 end 60 61 62 def all_worker_info 63 p_data = { } 64 p_data[:type] = :all_worker_info 65 establish_connection 66 raise BackgrounDRb::BdrbConnError.new("Not able to connect") unless @connection_status 67 dump_object(p_data,@connection) 68 return read_from_bdrb 59 69 end 60 70 trunk/script/backgroundrb
r298 r303 52 52 rescue Errno::ESRCH => e 53 53 puts "Deleting pid file" 54 rescue 55 puts $! 56 ensure 57 File.delete(path) if File.exists?(path) 54 58 end 55 File.delete(path)56 59 else 57 60 BackgrounDRb::MasterProxy.new() trunk/server/master_worker.rb
r300 r303 5 5 # Class wraps a logger object for debugging internal errors within server 6 6 class DebugMaster 7 attr_accessor :log_mode 8 attr_accessor :logger 9 def initialize(log_mode) 7 attr_accessor :log_mode,:logger,:log_flag 8 def initialize(log_mode,log_flag = true) 10 9 @log_mode = log_mode 10 @log_flag = log_flag 11 11 if @log_mode == :foreground 12 12 @logger = ::Logger.new(STDOUT) … … 17 17 18 18 def info(data) 19 return unless @log_flag 19 20 @logger.info(data) 20 21 end 21 22 22 23 def debug(data) 24 return unless @log_flag 23 25 @logger.debug(data) 24 26 end … … 40 42 when :all_worker_status: query_all_worker_status(t_data) 41 43 when :worker_info: pass_worker_info(t_data) 44 when :all_worker_info: all_worker_info(t_data) 42 45 end 43 46 end … … 52 55 send_object(info_response) 53 56 end 57 58 def all_worker_info(t_data) 59 info_response = [] 60 reactor.live_workers.each do |key,value| 61 job_key = (value.worker_key.to_s).gsub(/#{value.worker_name}_?/,"") 62 info_response << { :worker => value.worker_name,:job_key => job_key,:status => :running } 63 end 64 send_object(info_response) 65 end 54 66 55 67 def query_all_worker_status(p_data) … … 59 71 end 60 72 73 # FIXME: although worker key is removed nonetheless from live_workers hash 74 # it could be a good idea to remove it here itself. 61 75 def delete_drb_worker(t_data) 62 76 worker_name = t_data[:worker] … … 64 78 worker_name_key = gen_worker_key(worker_name,job_key) 65 79 begin 66 ask_worker(worker_name,:job_key => t_data[:job_key],:type => :request, :data => { :worker_method => :exit}) 80 # ask_worker(worker_name,:job_key => t_data[:job_key],:type => :request, :data => { :worker_method => :exit}) 81 worker_instance = reactor.live_workers[worker_name_key] 82 # pgid = Process.getpgid(worker_instance.pid) 83 Process.kill('TERM',worker_instance.pid) 84 # Process.kill('-TERM',pgid) 85 Process.kill('KILL',worker_instance.pid) 67 86 rescue Packet::DisconnectError => sock_error 68 87 # reactor.live_workers.delete(worker_name_key) … … 71 90 debug_logger.info($!.to_s) 72 91 debug_logger.info($!.backtrace.join("\n")) 73 return74 92 end 75 93 end … … 139 157 raise "Running old Ruby version, upgrade to Ruby >= 1.8.5" unless check_for_ruby_version 140 158 @config_file = YAML.load(ERB.new(IO.read("#{RAILS_HOME}/config/backgroundrb.yml")).result) 141 debug_logger = DebugMaster.new(@config_file[:backgroundrb][:log]) 159 log_flag = @config_file[:backgroundrb][:debug_log].nil? ? true : @config_file[:backgroundrb][:debug_log] 160 debug_logger = DebugMaster.new(@config_file[:backgroundrb][:log],log_flag) 142 161 143 162 load_rails_env … … 155 174 RAILS_ENV.replace(run_env) if defined?(RAILS_ENV) 156 175 require RAILS_HOME + '/config/environment.rb' 157 load_rails_models 176 load_rails_models unless @config_file[:backgroundrb][:lazy_load] 158 177 ActiveRecord::Base.allow_concurrency = true 159 178 end trunk/server/meta_worker.rb
r302 r303 11 11 12 12 def debug(p_data) 13 @worker.send_request(:worker => :log_worker, :data => p_data) 14 end 15 16 def error(p_data) 13 17 @worker.send_request(:worker => :log_worker, :data => p_data) 14 18 end … … 60 64 def add_thread 61 65 @threads << Thread.new do 66 puts "calling add thread" 62 67 while true 63 68 … … 216 221 end 217 222 called_method_arity = self.method(user_input[:worker_method]).arity 218 logger.info "Arity of method is #{called_method_arity}"219 223 result = nil 220 224 if called_method_arity != 0 … … 224 228 end 225 229 result = "dummy_result" unless result 226 send_response(p_data,result) 227 end 228 230 send_response(p_data,result) if can_dump?(result) 231 end 232 233 def can_dump?(p_object) 234 begin 235 Marshal.dump(p_object) 236 return true 237 rescue TypeError 238 return false 239 rescue 240 return false 241 end 242 end 243 229 244 def load_schedule 230 245 case @my_schedule[:trigger_args]
