Method: Oxidized::Node#run_input

Defined in:
lib/oxidized/node.rb

#run_input(input) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/oxidized/node.rb', line 51

def run_input input
  rescue_fail = {}
  [input.class::RescueFail, input.class.superclass::RescueFail].each do |hash|
    hash.each do |level,errors|
      errors.each do |err|
        rescue_fail[err] = level
      end
    end
  end
  begin
    input.connect(self) and input.get
  rescue *rescue_fail.keys => err
    resc  = ''
    if not level = rescue_fail[err.class]
      resc  = err.class.ancestors.find{|e|rescue_fail.keys.include? e}
      level = rescue_fail[resc]
      resc  = " (rescued #{resc})"
    end
    Oxidized.logger.send(level, '%s raised %s%s with msg "%s"' % [self.ip, err.class, resc, err.message])
    return false
  rescue => err
    file = Oxidized::Config::Crash + '.' + self.ip.to_s
    open file, 'w' do |fh|
      fh.puts Time.now.utc
      fh.puts err.message + ' [' + err.class.to_s + ']'
      fh.puts '-' * 50
      fh.puts err.backtrace
    end
    Oxidized.logger.error '%s raised %s with msg "%s", %s saved' % [self.ip, err.class, err.message, file]
    return false
  end
end