r23452 - gnucash/trunk/src/backend/dbi - Bug 704506 - Connection loss to mysql after resume from hibernation

John Ralls jralls at code.gnucash.org
Wed Nov 27 22:46:31 EST 2013


Author: jralls
Date: 2013-11-27 22:46:30 -0500 (Wed, 27 Nov 2013)
New Revision: 23452
Trac: http://svn.gnucash.org/trac/changeset/23452

Modified:
   gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
Log:
Bug 704506 - Connection loss to mysql after resume from hibernation

Add a 2^n ms backoff for connection retries so the server has time
to restart after hibernation.

Modified: gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2013-11-28 00:39:13 UTC (rev 23451)
+++ gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c	2013-11-28 03:46:30 UTC (rev 23452)
@@ -416,6 +416,7 @@
     GncDbiSqlConnection *dbi_conn = (GncDbiSqlConnection*)be->sql_be.conn;
     const gchar* msg;
     gint err_num;
+    const guint backoff_usecs = 1000;
 
     err_num = dbi_conn_error( conn, &msg );
 
@@ -464,6 +465,7 @@
         }
         else
         {
+	    usleep (backoff_usecs * 2 << dbi_conn->error_repeat);
             PINFO( "DBI error: %s - Reconnecting...\n", msg );
             if (dbi_conn)
                 gnc_dbi_set_error( dbi_conn, ERR_BACKEND_CANT_CONNECT, 1, TRUE );
@@ -1032,6 +1034,7 @@
     GncDbiBackend *be = (GncDbiBackend*)user_data;
     GncDbiSqlConnection *dbi_conn = (GncDbiSqlConnection*)be->sql_be.conn;
     const gchar* msg;
+    const guint backoff_usecs = 1000;
 
     (void)dbi_conn_error( conn, &msg );
     if ( g_str_has_prefix( msg, "FATAL:  database" ) &&
@@ -1065,6 +1068,7 @@
         }
         else
         {
+	    usleep (backoff_usecs * 2 << dbi_conn->error_repeat);
             PINFO( "DBI error: %s - Reconnecting...\n", msg );
             gnc_dbi_set_error( dbi_conn, ERR_BACKEND_CANT_CONNECT, 1, TRUE );
             dbi_conn->conn_ok = TRUE;



More information about the gnucash-changes mailing list