From 18a30f05c2b405fe1e3741f3e391759cb20cd220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 6 Mar 2019 16:14:38 +0200 Subject: [PATCH] Connect to master on read if master_accept_reads is on The master should be considered as a valid target when master_accept_reads is enabled but a connection to it has not yet been created. --- .../modules/routing/readwritesplit/rwsplit_route_stmt.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc index 7223258f0..c37fd2765 100644 --- a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc +++ b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc @@ -658,11 +658,9 @@ RWBackend* RWSplitSession::get_slave_backend(int max_rlag) for (auto& backend : m_raw_backends) { - bool can_take_slave_into_use = backend->is_slave() - && !backend->in_use() - && can_recover_servers() - && backend->can_connect() - && counts.second < m_router->max_slave_count(); + bool can_take_slave_into_use = !backend->in_use() && can_recover_servers() + && backend->can_connect() && counts.second < m_router->max_slave_count() + && (backend->is_slave() || (backend->is_master() && m_config.master_accept_reads)); bool master_or_slave = backend->is_master() || backend->is_slave(); bool is_usable = backend->in_use() || can_take_slave_into_use;