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 | |
| 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
| -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 | 
