diff --git a/server/modules/routing/readconnroute/readconnroute.c b/server/modules/routing/readconnroute/readconnroute.c index 8d96fe06d..9c0cd68da 100644 --- a/server/modules/routing/readconnroute/readconnroute.c +++ b/server/modules/routing/readconnroute/readconnroute.c @@ -310,7 +310,7 @@ newSession(MXS_ROUTER *instance, MXS_SESSION *session) */ for (SERVER_REF *ref = inst->service->dbref; ref; ref = ref->next) { - if (!SERVER_REF_IS_ACTIVE(ref) || SERVER_IN_MAINT(ref->server) || ref->weight == 0) + if (!SERVER_REF_IS_ACTIVE(ref) || SERVER_IN_MAINT(ref->server)) { continue; } @@ -368,6 +368,10 @@ newSession(MXS_ROUTER *instance, MXS_SESSION *session) { candidate = ref; } + else if (ref->weight == 0 || candidate->weight == 0) + { + candidate = ref->weight ? ref : candidate; + } else if (((ref->connections + 1) * 1000) / ref->weight < ((candidate->connections + 1) * 1000) / candidate->weight) {