dovecot-2.1: sql: Fixed retrying query when multiple hosts were ...

dovecot at dovecot.org dovecot at dovecot.org
Sat Jan 28 22:06:13 EET 2012


details:   http://hg.dovecot.org/dovecot-2.1/rev/6b902f2be944
changeset: 14024:6b902f2be944
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Jan 28 22:05:52 2012 +0200
description:
sql: Fixed retrying query when multiple hosts were specified and all of them got disconnected.

diffstat:

 src/lib-sql/driver-sqlpool.c |  9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diffs (30 lines):

diff -r 67972d72b55c -r 6b902f2be944 src/lib-sql/driver-sqlpool.c
--- a/src/lib-sql/driver-sqlpool.c	Sat Jan 28 20:21:10 2012 +0200
+++ b/src/lib-sql/driver-sqlpool.c	Sat Jan 28 22:05:52 2012 +0200
@@ -47,7 +47,7 @@
 	time_t created;
 
 	unsigned int host_idx;
-	unsigned int retried:1;
+	unsigned int retry_count;
 
 	/* requests are a) queries */
 	char *query;
@@ -609,13 +609,14 @@
 			      struct sqlpool_request *request)
 {
 	struct sqlpool_db *db = request->db;
-	const struct sqlpool_connection *conn;
+	const struct sqlpool_connection *conn = NULL;
 	struct sql_db *conndb;
 
-	if (result->failed_try_retry && !request->retried) {
+	if (result->failed_try_retry &&
+	    request->retry_count < array_count(&db->hosts)) {
 		i_error("%s: Query failed, retrying: %s",
 			db->driver->name, sql_result_get_error(result));
-		request->retried = TRUE;
+		request->retry_count++;
 		driver_sqlpool_prepend_request(db, request);
 
 		if (driver_sqlpool_get_connection(request->db,


More information about the dovecot-cvs mailing list