diff options
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugin')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugin/helpers.py | 10 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Plugin/interfaces.py | 10 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/lib/Bcfg2/Server/Plugin/helpers.py b/src/lib/Bcfg2/Server/Plugin/helpers.py index 2aab231c6..5cfc8998c 100644 --- a/src/lib/Bcfg2/Server/Plugin/helpers.py +++ b/src/lib/Bcfg2/Server/Plugin/helpers.py @@ -266,7 +266,7 @@ class FileBacked(Debuggable): self.fam = Bcfg2.Server.FileMonitor.get_fam() def HandleEvent(self, event=None): - """ HandleEvent is called whenever the FAM registers an event. + """HandleEvent is called whenever the FAM registers an event. :param event: The event object :type event: Bcfg2.Server.FileMonitor.Event @@ -276,13 +276,11 @@ class FileBacked(Debuggable): return try: self.data = open(self.name).read() - self.Index() except IOError: err = sys.exc_info()[1] self.logger.error("Failed to read file %s: %s" % (self.name, err)) - except: - err = sys.exc_info()[1] - self.logger.error("Failed to parse file %s: %s" % (self.name, err)) + + self.Index() def Index(self): """ Index() is called by :func:`HandleEvent` every time the @@ -1196,7 +1194,7 @@ class SpecificData(Debuggable): self.data = open(self.name).read() except UnicodeDecodeError: self.data = open(self.name, mode='rb').read() - except: # pylint: disable=W0201 + except IOError: self.logger.error("Failed to read file %s" % self.name) diff --git a/src/lib/Bcfg2/Server/Plugin/interfaces.py b/src/lib/Bcfg2/Server/Plugin/interfaces.py index c45d6fa84..da39ac77a 100644 --- a/src/lib/Bcfg2/Server/Plugin/interfaces.py +++ b/src/lib/Bcfg2/Server/Plugin/interfaces.py @@ -445,8 +445,14 @@ class ThreadedStatistics(Statistics, Threaded, threading.Thread): except Empty: continue except: - err = sys.exc_info()[1] - self.logger.error("ThreadedStatistics: %s" % err) + # we want to catch all exceptions here so that a stray + # error doesn't kill the entire statistics thread. For + # instance, if a bad value gets pushed onto the queue + # and the assignment above raises TypeError, we want + # to report the error, ignore the bad value, and + # continue processing statistics. + self.logger.error("Unknown error processing statistics: %s" % + sys.exc_info()[1]) continue self.handle_statistic(client, xdata) if self.work_queue is not None and not self.work_queue.empty(): |