From a8ce6fd1113bb4c72170d1c78584a5ce461bc6f4 Mon Sep 17 00:00:00 2001 From: Chris Swingler Date: Mon, 19 Dec 2016 11:41:52 -0600 Subject: [PATCH 1/3] Fixing some buggy data handling --- mysql.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mysql.py b/mysql.py index cb80b64..1e03992 100644 --- a/mysql.py +++ b/mysql.py @@ -467,10 +467,16 @@ def fetch_innodb_stats(conn): # 205 lock struct(s), heap size 30248, 37 row lock(s), undo log entries 1 elif line.find("lock struct(s)") != -1: if line.find("LOCK WAIT") != -1: - stats['innodb_lock_structs'] += int(row[2]) + try: + stats['innodb_lock_structs'] += int(row[2]) + except ValueError: + pass stats['locked_transactions'] += 1 else: - stats['innodb_lock_structs'] += int(row[0]) + try: + stats['innodb_lock_structs'] += int(row[0]) + except ValueError: + stats['innodb_lock_struts'] = None else: for match in MYSQL_INNODB_STATUS_MATCHES: if line.find(match) == -1: continue @@ -493,8 +499,9 @@ def dispatch_value(prefix, key, value, type, type_instance=None): if not type_instance: type_instance = key - log_verbose('Sending value: %s/%s=%s' % (prefix, type_instance, value)) - if not value: + log_verbose('Prepping value: %s/%s=%s' % (prefix, type_instance, value)) + if not value and value != 0: + log_verbose("value determined to be not sendable, dropping data point.") return try: value = int(value) @@ -506,6 +513,7 @@ def dispatch_value(prefix, key, value, type, type_instance=None): val.type_instance = type_instance val.values = [value] val.dispatch() + log_verbose('Dispatching value: %s/%s=%s' % (prefix, type_instance, value)) def configure_callback(conf): global MYSQL_CONFIG From 348f4523dbe4326a475f7a4c40d37d90a3cc5523 Mon Sep 17 00:00:00 2001 From: Chris Swingler Date: Mon, 19 Dec 2016 11:49:08 -0600 Subject: [PATCH 2/3] more try/excepts --- mysql.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql.py b/mysql.py index 1e03992..4a76b87 100644 --- a/mysql.py +++ b/mysql.py @@ -483,7 +483,10 @@ def fetch_innodb_stats(conn): for key in MYSQL_INNODB_STATUS_MATCHES[match]: value = MYSQL_INNODB_STATUS_MATCHES[match][key] if type(value) is int: - stats[key] = int(row[value]) + try: + stats[key] = int(row[value]) + except ValueError: + pass else: stats[key] = value(row, stats) break From 036341b738715d9b7698f4d82cfd6ce67611e0a6 Mon Sep 17 00:00:00 2001 From: Chris Swingler Date: Mon, 19 Dec 2016 11:53:52 -0600 Subject: [PATCH 3/3] That's an interator, opt to do nothing instead. --- mysql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql.py b/mysql.py index 4a76b87..cd6ce31 100644 --- a/mysql.py +++ b/mysql.py @@ -476,7 +476,7 @@ def fetch_innodb_stats(conn): try: stats['innodb_lock_structs'] += int(row[0]) except ValueError: - stats['innodb_lock_struts'] = None + pass else: for match in MYSQL_INNODB_STATUS_MATCHES: if line.find(match) == -1: continue