@cryptotaxi247 / netdata-1 / commits / 5bb65adea

MySQLService: better error handling

Ilya committed Mar 10, 2017 at 15:12 UTC 5bb65adeaf3ccfbaeb35f60fb09b14f7c18ce0b4
1 file changed +8 -1
python.d/python_modules/base.py
+8 -1
@@ -1050,7 +1050,7 @@ class MySQLService(SimpleService):
1050 try:
1051 cursor.execute(query)
1052 except (MySQLdb.ProgrammingError, MySQLdb.OperationalError) as error:
1053 - if exc_info()[0] == MySQLdb.OperationalError and 'denied' not in str(error):
1053 + if self.__is_error_critical(err_class=exc_info()[0], err_text=str(error)):
1054 raise RuntimeError
1055 self.error('Removed query: %s[%s]. Error: %s'
1056 % (name, query, error))
@@ -1065,3 +1065,10 @@ class MySQLService(SimpleService):
1065 return None
1066 else:
1067 return raw_data or None
1068 +
1069 + @staticmethod
1070 + def __is_error_critical(err_class, err_text):
1071 + def in_not_in(value):
1072 + return value[1:] in err_text if value[0] == '+' else value[1:] not in err_text
1073 +
1074 + return err_class == MySQLdb.OperationalError and all([in_not_in('-denied'), in_not_in('-Unknown column')])