X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmysql.c;h=f93a4421bebc695a1f41a85eab3b2daf91f27174;hb=c6da31fb30c2fb1d131f92efcde0b3ec9a010b2c;hp=1048511ce568cb266413519e9c56709ef60092b3;hpb=658c85755ef1f4284228d1e5edbc4452a31bd944;p=collectd.git diff --git a/src/mysql.c b/src/mysql.c index 1048511c..f93a4421 100644 --- a/src/mysql.c +++ b/src/mysql.c @@ -59,7 +59,7 @@ struct mysql_database_s /* {{{ */ int slave_sql_running; MYSQL *con; - int state; + _Bool is_connected; }; typedef struct mysql_database_s mysql_database_t; /* }}} */ @@ -342,7 +342,8 @@ static int mysql_config (oconfig_item_t *ci) /* {{{ */ else sstrncpy (cb_name, "mysql", sizeof (cb_name)); - plugin_register_complex_read (cb_name, mysql_read, + plugin_register_complex_read (/* group = */ NULL, cb_name, + mysql_read, /* interval = */ NULL, &ud); } else @@ -358,30 +359,31 @@ static int mysql_config (oconfig_item_t *ci) /* {{{ */ static MYSQL *getconnection (mysql_database_t *db) { - if (db->state != 0) + if (db->is_connected) { - int err; - if ((err = mysql_ping (db->con)) != 0) - { - WARNING ("mysql_ping failed for %s: %s", - (db->instance != NULL) - ? db->instance - : "", - mysql_error (db->con)); - db->state = 0; - } - else - { - db->state = 1; + int status; + + status = mysql_ping (db->con); + if (status == 0) return (db->con); - } + + WARNING ("mysql plugin: Lost connection to instance \"%s\": %s", + (db->instance != NULL) + ? db->instance + : "", + mysql_error (db->con)); } + db->is_connected = 0; - if ((db->con = mysql_init (db->con)) == NULL) + if (db->con == NULL) { - ERROR ("mysql_init failed: %s", mysql_error (db->con)); - db->state = 0; - return (NULL); + db->con = mysql_init (NULL); + if (db->con == NULL) + { + ERROR ("mysql plugin: mysql_init failed: %s", + mysql_error (db->con)); + return (NULL); + } } if (mysql_real_connect (db->con, db->host, db->user, db->pass, @@ -392,20 +394,18 @@ static MYSQL *getconnection (mysql_database_t *db) (db->database != NULL) ? db->database : "", (db->host != NULL) ? db->host : "localhost", mysql_error (db->con)); - db->state = 0; return (NULL); } - else - { - INFO ("mysql plugin: Sucessfully connected to database %s " - "at server %s (server version: %s, protocol version: %d)", - (db->database != NULL) ? db->database : "", - mysql_get_host_info (db->con), - mysql_get_server_info (db->con), - mysql_get_proto_info (db->con)); - db->state = 1; - return (db->con); - } + + INFO ("mysql plugin: Successfully connected to database %s " + "at server %s (server version: %s, protocol version: %d)", + (db->database != NULL) ? db->database : "", + mysql_get_host_info (db->con), + mysql_get_server_info (db->con), + mysql_get_proto_info (db->con)); + + db->is_connected = 1; + return (db->con); } /* static MYSQL *getconnection (mysql_database_t *db) */ static void set_host (mysql_database_t *db, char *buf, size_t buflen) @@ -556,6 +556,7 @@ static int mysql_read_master_stats (mysql_database_t *db, MYSQL *con) { ERROR ("mysql plugin: Failed to get master statistics: " "`%s' did not return any rows.", query); + mysql_free_result (res); return (-1); } @@ -564,6 +565,7 @@ static int mysql_read_master_stats (mysql_database_t *db, MYSQL *con) { ERROR ("mysql plugin: Failed to get master statistics: " "`%s' returned less than two columns.", query); + mysql_free_result (res); return (-1); } @@ -607,6 +609,7 @@ static int mysql_read_slave_stats (mysql_database_t *db, MYSQL *con) { ERROR ("mysql plugin: Failed to get slave statistics: " "`%s' did not return any rows.", query); + mysql_free_result (res); return (-1); } @@ -615,6 +618,7 @@ static int mysql_read_slave_stats (mysql_database_t *db, MYSQL *con) { ERROR ("mysql plugin: Failed to get slave statistics: " "`%s' returned less than 33 columns.", query); + mysql_free_result (res); return (-1); } @@ -685,7 +689,7 @@ static int mysql_read_slave_stats (mysql_database_t *db, MYSQL *con) ssnprintf (n.message, sizeof (n.message), "slave SQL thread started"); plugin_dispatch_notification (&n); - db->slave_sql_running = 0; + db->slave_sql_running = 1; } } @@ -706,7 +710,6 @@ static int mysql_read (user_data_t *ud) MYSQL_RES *res; MYSQL_ROW row; char *query; - int field_num; unsigned long long qcache_hits = 0ULL; unsigned long long qcache_inserts = 0ULL; @@ -742,7 +745,6 @@ static int mysql_read (user_data_t *ud) if (res == NULL) return (-1); - field_num = mysql_num_fields (res); while ((row = mysql_fetch_row (res))) { char *key;