Module: sip-router Branch: master Commit: 7ca3941c12b8a78d58642241c3dab9621ff0f2e1 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7ca3941c...
Author: Marius Zbihlei marius.zbihlei@1and1.ro Committer: Marius Zbihlei marius.zbihlei@1and1.ro Date: Thu Aug 12 18:11:16 2010 +0300
modules/db_mysql Added statistics (via counter framework) for mysql driver error
These errors are caused by lost connectivity to the server.
---
modules/db_mysql/km_dbase.c | 5 +++++ modules/db_mysql/km_my_con.c | 4 +++- modules/db_mysql/mysql_mod.c | 10 ++++++++++ modules/db_mysql/mysql_mod.h | 11 +++++++++++ 4 files changed, 29 insertions(+), 1 deletions(-)
diff --git a/modules/db_mysql/km_dbase.c b/modules/db_mysql/km_dbase.c index 49ab55a..b73e73a 100644 --- a/modules/db_mysql/km_dbase.c +++ b/modules/db_mysql/km_dbase.c @@ -81,6 +81,7 @@ static int db_mysql_submit_query(const db1_con_t* _h, const str* _s) if ((t - CON_TIMESTAMP(_h)) > my_ping_interval) { if (mysql_ping(CON_CONNECTION(_h))) { LM_WARN("driver error on ping: %s\n", mysql_error(CON_CONNECTION(_h))); + counter_inc(mysql_cnts_h.driver_err); } } /* @@ -115,6 +116,10 @@ static int db_mysql_submit_query(const db1_con_t* _h, const str* _s) } } LM_ERR("driver error on query: %s\n", mysql_error(CON_CONNECTION(_h))); + /* Bad queries don't count */ + if(code == CR_SERVER_GONE_ERROR || code == CR_SERVER_LOST) { + counter_inc(mysql_cnts_h.driver_err); + } return -2; }
diff --git a/modules/db_mysql/km_my_con.c b/modules/db_mysql/km_my_con.c index 953c574..ce20be2 100644 --- a/modules/db_mysql/km_my_con.c +++ b/modules/db_mysql/km_my_con.c @@ -34,7 +34,7 @@ #include "../../mem/mem.h" #include "../../dprint.h" #include "../../ut.h" - +#include "mysql_mod.h"
/*! \brief * Create a new connection structure, @@ -107,6 +107,8 @@ struct my_con* db_mysql_new_connection(const struct db_id* id) id->database, id->port, 0, 0)) { #endif LM_ERR("driver error: %s\n", mysql_error(ptr->con)); + /* increase error counter */ + counter_inc(mysql_cnts_h.driver_err); mysql_close(ptr->con); goto err; } diff --git a/modules/db_mysql/mysql_mod.c b/modules/db_mysql/mysql_mod.c index e0ebe7f..014e396 100644 --- a/modules/db_mysql/mysql_mod.c +++ b/modules/db_mysql/mysql_mod.c @@ -57,6 +57,12 @@ unsigned int my_retries = 1; /* Number of retries when command fails */
unsigned long my_client_ver = 0;
+struct mysql_counters_h mysql_cnts_h; +counter_def_t mysql_cnt_defs[] = { + {&mysql_cnts_h.driver_err, "Mysql driver erros", 0, 0, 0, + "incremented each time a Mysql error happened because the server/connection has failed."}, + {0, 0, 0, 0, 0, 0 } +}; #define DEFAULT_MY_SEND_TO 2 /* in seconds */ #define DEFAULT_MY_RECV_TO 4 /* in seconds */
@@ -145,8 +151,12 @@ static int mysql_mod_init(void) " compiled against %ld)\n", MYSQL_VERSION_ID); } #endif + if (counter_register_array("mysql", mysql_cnt_defs) < 0) + goto error;
return kam_mysql_mod_init(); +error: + return -1; }
/** @} */ diff --git a/modules/db_mysql/mysql_mod.h b/modules/db_mysql/mysql_mod.h index 3a6f470..0d98334 100644 --- a/modules/db_mysql/mysql_mod.h +++ b/modules/db_mysql/mysql_mod.h @@ -36,10 +36,21 @@ #ifndef _MYSQL_MOD_H #define _MYSQL_MOD_H
+#include "../../counters.h" + +/* counter struct +*/ +struct mysql_counters_h { + counter_handle_t driver_err; +}; +/* defined in km_dbase.c */ +extern struct mysql_counters_h mysql_cnts_h; + /** @defgroup mysql MySQL db driver * @ingroup DB_API */ /** @{ */ + extern int my_ping_interval; extern unsigned int my_connect_to; extern unsigned int my_send_to;