]> arthur.barton.de Git - netdata.git/commitdiff
MySQLService: better error handling
authorIlya <ilyamaschenko@gmail.com>
Fri, 10 Mar 2017 06:12:17 +0000 (15:12 +0900)
committerIlya <ilyamaschenko@gmail.com>
Fri, 10 Mar 2017 06:12:17 +0000 (15:12 +0900)
python.d/python_modules/base.py

index 34811c2477c239494cfdf99fa74145bfcaad0a86..f25c614644f727a7ce15b147c1d07ec53f199e42 100644 (file)
@@ -1050,7 +1050,7 @@ class MySQLService(SimpleService):
                     try:
                         cursor.execute(query)
                     except (MySQLdb.ProgrammingError, MySQLdb.OperationalError) as error:
-                        if exc_info()[0] == MySQLdb.OperationalError and 'denied' not in str(error):
+                        if self.__is_error_critical(err_class=exc_info()[0], err_text=str(error)):
                             raise RuntimeError
                         self.error('Removed query: %s[%s]. Error: %s'
                                    % (name, query, error))
@@ -1065,3 +1065,10 @@ class MySQLService(SimpleService):
             return None
         else:
             return raw_data or None
+
+    @staticmethod
+    def __is_error_critical(err_class, err_text):
+        def in_not_in(value):
+            return value[1:] in err_text if value[0] == '+' else value[1:] not in err_text
+
+        return err_class == MySQLdb.OperationalError and all([in_not_in('-denied'), in_not_in('-Unknown column')])