From 74eeb64fba37f7a9c7f8cd190e45f5cde6653e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 20 Mar 2019 15:42:09 +0200 Subject: [PATCH] Don't close connections to servers being drained The connections to servers being drained should not be closed like they should be for servers in maintenance mode. The change in functionality between 2.3 and develop caused the connections to be discarded if the server was in either maintenance or drain mode. --- server/modules/routing/readwritesplit/rwsplitsession.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/modules/routing/readwritesplit/rwsplitsession.cc b/server/modules/routing/readwritesplit/rwsplitsession.cc index d2e01c811..2cdd7a3b4 100644 --- a/server/modules/routing/readwritesplit/rwsplitsession.cc +++ b/server/modules/routing/readwritesplit/rwsplitsession.cc @@ -545,12 +545,14 @@ void RWSplitSession::close_stale_connections() { if (backend->in_use()) { - if (!backend->can_connect()) + auto server = backend->server(); + + if (!server->is_usable()) { MXS_INFO("Discarding connection to '%s': Server is in maintenance", backend->name()); backend->close(); } - else if (backend->server()->rank() != current_rank) + else if (server->rank() != current_rank) { MXS_INFO("Discarding connection to '%s': Server has rank %ld and current rank is %ld", backend->name(), backend->server()->rank(), current_rank);