Changeset 303

Show
Ignore:
Timestamp:
01/03/08 16:23:21 (8 months ago)
Author:
gethema..@gmail.com
Message:

check in fixes for logging, config options and worker info

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/framework/meta_pimp.rb

    r294 r303  
    55  # initializer of pimp 
    66  attr_accessor :callback_hash 
    7   attr_accessor :worker_status, :worker_key 
     7  attr_accessor :worker_status, :worker_key,:worker_name 
    88  def pimp_init 
    99    @callback_hash ||= {} 
  • trunk/framework/packet_master.rb

    r286 r303  
    146146        t_pimp = Packet::MetaPimp.new(master_write_end,pid,self) 
    147147        t_pimp.worker_key = worker_name_key 
     148        t_pimp.worker_name = t_worker_name 
    148149        @live_workers[worker_name_key,master_read_end.fileno] = t_pimp 
    149150      end 
  • trunk/lib/backgroundrb.rb

    r296 r303  
    5757    dump_object(p_data,@connection) 
    5858    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 
    5969  end 
    6070 
  • trunk/script/backgroundrb

    r298 r303  
    5252  rescue Errno::ESRCH => e 
    5353    puts "Deleting pid file" 
     54  rescue 
     55    puts $! 
     56  ensure 
     57    File.delete(path) if File.exists?(path)     
    5458  end 
    55   File.delete(path) 
    5659else 
    5760  BackgrounDRb::MasterProxy.new() 
  • trunk/server/master_worker.rb

    r300 r303  
    55  # Class wraps a logger object for debugging internal errors within server 
    66  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) 
    109      @log_mode = log_mode 
     10      @log_flag = log_flag 
    1111      if @log_mode == :foreground 
    1212        @logger = ::Logger.new(STDOUT) 
     
    1717 
    1818    def info(data) 
     19      return unless @log_flag 
    1920      @logger.info(data) 
    2021    end 
    2122 
    2223    def debug(data) 
     24      return unless @log_flag 
    2325      @logger.debug(data) 
    2426    end 
     
    4042        when :all_worker_status: query_all_worker_status(t_data) 
    4143        when :worker_info: pass_worker_info(t_data) 
     44        when :all_worker_info: all_worker_info(t_data) 
    4245        end 
    4346      end 
     
    5255      send_object(info_response) 
    5356    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 
    5466 
    5567    def query_all_worker_status(p_data) 
     
    5971    end 
    6072 
     73    # FIXME: although worker key is removed nonetheless from live_workers hash 
     74    # it could be a good idea to remove it here itself. 
    6175    def delete_drb_worker(t_data) 
    6276      worker_name = t_data[:worker] 
     
    6478      worker_name_key = gen_worker_key(worker_name,job_key) 
    6579      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) 
    6786      rescue Packet::DisconnectError => sock_error 
    6887        # reactor.live_workers.delete(worker_name_key) 
     
    7190        debug_logger.info($!.to_s) 
    7291        debug_logger.info($!.backtrace.join("\n")) 
    73         return 
    7492      end 
    7593    end 
     
    139157      raise "Running old Ruby version, upgrade to Ruby >= 1.8.5" unless check_for_ruby_version 
    140158      @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) 
    142161 
    143162      load_rails_env 
     
    155174      RAILS_ENV.replace(run_env) if defined?(RAILS_ENV) 
    156175      require RAILS_HOME + '/config/environment.rb' 
    157       load_rails_models 
     176      load_rails_models unless @config_file[:backgroundrb][:lazy_load] 
    158177      ActiveRecord::Base.allow_concurrency = true 
    159178    end 
  • trunk/server/meta_worker.rb

    r302 r303  
    1111 
    1212    def debug(p_data) 
     13      @worker.send_request(:worker => :log_worker, :data => p_data) 
     14    end 
     15     
     16    def error(p_data) 
    1317      @worker.send_request(:worker => :log_worker, :data => p_data) 
    1418    end 
     
    6064    def add_thread 
    6165      @threads << Thread.new do 
     66        puts "calling add thread"  
    6267        while true 
    6368           
     
    216221      end 
    217222      called_method_arity = self.method(user_input[:worker_method]).arity 
    218       logger.info "Arity of method is #{called_method_arity}" 
    219223      result = nil 
    220224      if called_method_arity != 0 
     
    224228      end 
    225229      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     
    229244    def load_schedule 
    230245      case @my_schedule[:trigger_args]