From 64c048ed600c8a4d115280b5f92f1ea288c6ea8e Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 1 Nov 2006 11:32:13 +0100 Subject: [PATCH] mysql plugin: Don't give up when connecting to the database fails during `init'. Instead a connection attempt is made in increasing intervals, up to one day. --- src/mysql.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/mysql.c b/src/mysql.c index 822c6cce..caebdf31 100644 --- a/src/mysql.c +++ b/src/mysql.c @@ -44,10 +44,6 @@ static char *user; static char *pass; static char *db = NULL; -#if MYSQL_HAVE_READ -static char init_suceeded = 0; -#endif - /* TODO * understand `Select_*' and possibly do that stuff as well.. */ @@ -117,6 +113,11 @@ static MYSQL *getconnection (void) static MYSQL *con; static int state; + static int wait_for = 0; + static int wait_increase = 60; + + int step; + if (state != 0) { int err; @@ -132,6 +133,19 @@ static MYSQL *getconnection (void) } } + step = atoi (COLLECTD_STEP); + + if (wait_for > 0) + { + wait_for -= step; + return (NULL); + } + + wait_for = wait_increase; + wait_increase *= 2; + if (wait_increase > 86400) + wait_increase = 86400; + if ((con = mysql_init (con)) == NULL) { syslog (LOG_ERR, "mysql_init failed: %s", mysql_error (con)); @@ -148,6 +162,8 @@ static MYSQL *getconnection (void) else { state = 1; + wait_for = 0; + wait_increase = 60; return (con); } } /* static MYSQL *getconnection (void) */ @@ -155,16 +171,6 @@ static MYSQL *getconnection (void) static void init (void) { -#if MYSQL_HAVE_READ - if (getconnection () != NULL) - init_suceeded = 1; - else - { - syslog (LOG_ERR, "The `mysql' plugin will be disabled because `init' failed to connect to `%s'", host); - init_suceeded = 0; - } -#endif /* MYSQL_HAVE_READ */ - return; } @@ -358,9 +364,6 @@ static void mysql_read (void) unsigned long long traffic_incoming = 0ULL; unsigned long long traffic_outgoing = 0ULL; - if (init_suceeded == 0) - return; - /* An error message will have been printed in this case */ if ((con = getconnection ()) == NULL) return; -- 2.30.2