From ac8c2e777548e89a588f215dadfc5b27ee78ae0c Mon Sep 17 00:00:00 2001 From: John Ralls Date: Thu, 28 Nov 2013 03:46:30 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@23452 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/backend/dbi/gnc-backend-dbi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/dbi/gnc-backend-dbi.c b/src/backend/dbi/gnc-backend-dbi.c index d58e01338a..06ecf6d0f4 100644 --- a/src/backend/dbi/gnc-backend-dbi.c +++ b/src/backend/dbi/gnc-backend-dbi.c @@ -416,6 +416,7 @@ mysql_error_fn( dbi_conn conn, void* user_data ) 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 @@ mysql_error_fn( dbi_conn conn, void* user_data ) } 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 @@ pgsql_error_fn( dbi_conn conn, void* user_data ) 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 @@ pgsql_error_fn( dbi_conn conn, void* user_data ) } 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;