diff --git a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc index 50e4907ae..9af9b6c55 100644 --- a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc +++ b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc @@ -591,16 +591,9 @@ bool RWSplitSession::route_session_write(GWBUF* querybuf, uint8_t command, uint3 } else { - std::string status; - for (const auto& a : m_backends) - { - status += "\n"; - status += a->get_verbose_status(); - } - - MXS_ERROR("Could not route session command: %s. Connection information: %s", + MXS_ERROR("Could not route session command: %s. Connection status: %s", attempted_write ? "Write to all backends failed" : "All connections have failed", - status.c_str()); + get_verbose_status().c_str()); } return nsucc; @@ -739,7 +732,7 @@ SRWBackend RWSplitSession::get_master_backend() { MXS_ERROR("Cannot choose server '%s' as the master because it is not " "in use and a new connection to it cannot be created. Connection status: %s", - master->name(), master->get_verbose_status().c_str()); + master->name(), get_verbose_status().c_str()); } } diff --git a/server/modules/routing/readwritesplit/rwsplitsession.cc b/server/modules/routing/readwritesplit/rwsplitsession.cc index 0cc70e97d..09dae7656 100644 --- a/server/modules/routing/readwritesplit/rwsplitsession.cc +++ b/server/modules/routing/readwritesplit/rwsplitsession.cc @@ -1182,6 +1182,7 @@ bool RWSplitSession::handle_error_new_connection(DCB* backend_dcb, GWBUF* errmsg MXS_ERROR("Unable to continue session as all connections have failed and " "new connections cannot be created. Last server to fail was '%s'.", backend->name()); + MXS_INFO("Connection status: %s", get_verbose_status().c_str()); } return ok; diff --git a/server/modules/routing/readwritesplit/rwsplitsession.hh b/server/modules/routing/readwritesplit/rwsplitsession.hh index ded4b20b5..7d2a8a713 100644 --- a/server/modules/routing/readwritesplit/rwsplitsession.hh +++ b/server/modules/routing/readwritesplit/rwsplitsession.hh @@ -301,6 +301,19 @@ private: }); } + std::string get_verbose_status() + { + std::string status; + + for (const auto& a : m_backends) + { + status += "\n"; + status += a->get_verbose_status(); + } + + return status; + } + inline bool is_large_query(GWBUF* buf) { uint32_t buflen = gwbuf_length(buf);