dovecot-2.0: sql: Fixed retrying query when multiple hosts were ...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Jan 28 22:06:47 EET 2012
details: http://hg.dovecot.org/dovecot-2.0/rev/4e7676b890f1
changeset: 13032:4e7676b890f1
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 57498cad6ab9 -r 4e7676b890f1 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