diff options
author | Saku Ytti <saku@ytti.fi> | 2014-02-28 23:05:20 +0200 |
---|---|---|
committer | Saku Ytti <saku@ytti.fi> | 2014-02-28 23:05:20 +0200 |
commit | 65df741de7bdd837dc64f40b1fd3083cc98c9ad3 (patch) | |
tree | 133e0cfa13d5f9fbe303ebe99373bf62001d829d /lib/oxidized | |
parent | 554ed10e16544c76447cc4e97865055eeef47482 (diff) |
Rescue all StandardError from modules
If module crashes with unexpected error class, rescue it, and write it
backtrace
Also log if unknown model is attempted instead of crash
Diffstat (limited to 'lib/oxidized')
-rw-r--r-- | lib/oxidized/node.rb | 9 | ||||
-rw-r--r-- | lib/oxidized/nodes.rb | 8 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/oxidized/node.rb b/lib/oxidized/node.rb index 6c7b3aa..3027ccd 100644 --- a/lib/oxidized/node.rb +++ b/lib/oxidized/node.rb @@ -53,6 +53,15 @@ module Oxidized end Log.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 + Log.error '%s raised %s with msg "%s", %s saved' % [self.ip, err.class, err.message, file] end end diff --git a/lib/oxidized/nodes.rb b/lib/oxidized/nodes.rb index a6aa2f9..4cdbfbb 100644 --- a/lib/oxidized/nodes.rb +++ b/lib/oxidized/nodes.rb @@ -11,7 +11,13 @@ module Oxidized @source = CFG.source[:default] Oxidized.mgr.source = @source Oxidized.mgr.source[@source].new.load.each do |node| - new.push Node.new node + n = nil + begin + n = Node.new node + rescue LoadError => err + Log.warn 'load error %s with node %s' % [err.message, node] + end + new.push n if n end replace new end |