dovecot-2.1: lib-sql: Fixed load balancing between multiple SQL ...

dovecot at dovecot.org dovecot at dovecot.org
Fri Sep 16 16:59:32 EEST 2011


details:   http://hg.dovecot.org/dovecot-2.1/rev/327698228158
changeset: 13500:327698228158
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Sep 16 12:21:02 2011 +0300
description:
lib-sql: Fixed load balancing between multiple SQL hosts to actually work.

diffstat:

 src/lib-sql/driver-sqlpool.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (23 lines):

diff -r 79d54b6ccfe1 -r 327698228158 src/lib-sql/driver-sqlpool.c
--- a/src/lib-sql/driver-sqlpool.c	Fri Sep 16 12:11:25 2011 +0300
+++ b/src/lib-sql/driver-sqlpool.c	Fri Sep 16 12:21:02 2011 +0300
@@ -303,7 +303,7 @@
 
 	conns = array_get(&db->all_connections, &count);
 	for (i = 0; i < count; i++) {
-		unsigned int idx = (i + db->last_query_conn_idx) % count;
+		unsigned int idx = (i + db->last_query_conn_idx + 1) % count;
 		struct sql_db *conndb = conns[idx].db;
 
 		if (conns[idx].host_idx == unwanted_host_idx)
@@ -526,8 +526,8 @@
 		ret2 = conn->db->to_reconnect != NULL ? -1 :
 			sql_connect(conn->db);
 		if (ret2 > 0)
-			return 1;
-		if (ret2 == 0)
+			ret = 1;
+		else if (ret2 == 0 && ret < 0)
 			ret = 0;
 	}
 	return ret;


More information about the dovecot-cvs mailing list