From e516c11ac57f3afce28bd5d8a90a02bf82eba2e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Thu, 4 Jul 2019 08:38:31 +0300 Subject: [PATCH] MXS-2587: Never route stored queries in routeQuery This could end up in infinite mutual recursion if no responses are expected. Although this does not happen now that MXS-2587 is fixed, the code should not even be there. --- .../routing/readwritesplit/rwsplitsession.cc | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/server/modules/routing/readwritesplit/rwsplitsession.cc b/server/modules/routing/readwritesplit/rwsplitsession.cc index 2c49c068e..e92d89db1 100644 --- a/server/modules/routing/readwritesplit/rwsplitsession.cc +++ b/server/modules/routing/readwritesplit/rwsplitsession.cc @@ -175,24 +175,15 @@ int32_t RWSplitSession::routeQuery(GWBUF* querybuf) } else { - /** - * We are already processing a request from the client. Store the - * new query and wait for the previous one to complete. - */ - mxb_assert(m_expected_responses > 0 || !m_query_queue.empty()); + // We are already processing a request from the client. Store the new query and wait for the previous + // one to complete. MXS_INFO("Storing query (len: %d cmd: %0x), expecting %d replies to current command", - gwbuf_length(querybuf), - GWBUF_DATA(querybuf)[4], - m_expected_responses); + gwbuf_length(querybuf), GWBUF_DATA(querybuf)[4], m_expected_responses); + mxb_assert(m_expected_responses > 0 || !m_query_queue.empty()); m_query_queue.emplace_back(querybuf); querybuf = NULL; rval = 1; mxb_assert(m_expected_responses != 0); - - if (m_expected_responses == 0 && !route_stored_query()) - { - rval = 0; - } } if (querybuf != NULL)