From 12bd26398f6f84c74116d7d6b6bce44748a0819d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Tue, 23 Jul 2019 09:46:05 +0300 Subject: [PATCH] MXS-2486: Add missing schemarouter capabilities The capabilities that the schemarouter declared were missing the RCAP_TYPE_PACKET_OUTPUT which caused partial packets to be returned to it. --- server/modules/protocol/MySQL/rwbackend.cc | 1 + .../schemarouter/schemarouterinstance.cc | 31 ++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/server/modules/protocol/MySQL/rwbackend.cc b/server/modules/protocol/MySQL/rwbackend.cc index 0840c6cb6..2dc98d16e 100644 --- a/server/modules/protocol/MySQL/rwbackend.cc +++ b/server/modules/protocol/MySQL/rwbackend.cc @@ -294,6 +294,7 @@ void RWBackend::process_packets(GWBUF* result) auto it = buffer.begin(); MXB_AT_DEBUG(size_t total_len = buffer.length()); MXB_AT_DEBUG(size_t used_len = 0); + mxb_assert(dcb()->session->service->capabilities & (RCAP_TYPE_PACKET_OUTPUT | RCAP_TYPE_STMT_OUTPUT)); while (it != buffer.end()) { diff --git a/server/modules/routing/schemarouter/schemarouterinstance.cc b/server/modules/routing/schemarouter/schemarouterinstance.cc index 49d4a90a2..066955a62 100644 --- a/server/modules/routing/schemarouter/schemarouterinstance.cc +++ b/server/modules/routing/schemarouter/schemarouterinstance.cc @@ -265,9 +265,12 @@ json_t* SchemaRouter::diagnostics_json() const return rval; } +static const uint64_t CAPABILITIES = RCAP_TYPE_CONTIGUOUS_INPUT | RCAP_TYPE_PACKET_OUTPUT + | RCAP_TYPE_RUNTIME_CONFIG; + uint64_t SchemaRouter::getCapabilities() { - return RCAP_TYPE_CONTIGUOUS_INPUT | RCAP_TYPE_RUNTIME_CONFIG; + return schemarouter::CAPABILITIES; } } @@ -288,21 +291,21 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE() MXS_ROUTER_VERSION, "A database sharding router for simple sharding", "V1.0.0", - RCAP_TYPE_CONTIGUOUS_INPUT | RCAP_TYPE_RUNTIME_CONFIG, + schemarouter::CAPABILITIES, &schemarouter::SchemaRouter::s_object, - NULL, /* Process init. */ - NULL, /* Process finish. */ - NULL, /* Thread init. */ - NULL, /* Thread finish. */ + NULL, + NULL, + NULL, + NULL, { - {"ignore_databases", MXS_MODULE_PARAM_STRING }, - {"ignore_databases_regex", MXS_MODULE_PARAM_STRING }, - {"max_sescmd_history", MXS_MODULE_PARAM_COUNT, "0"}, - {"disable_sescmd_history", MXS_MODULE_PARAM_BOOL, "false"}, - {"refresh_databases", MXS_MODULE_PARAM_BOOL, "true"}, - {"refresh_interval", MXS_MODULE_PARAM_COUNT, DEFAULT_REFRESH_INTERVAL}, - {"debug", MXS_MODULE_PARAM_BOOL, "false"}, - {"preferred_server", MXS_MODULE_PARAM_SERVER }, + {"ignore_databases", MXS_MODULE_PARAM_STRING }, + {"ignore_databases_regex", MXS_MODULE_PARAM_STRING }, + {"max_sescmd_history", MXS_MODULE_PARAM_COUNT, "0"}, + {"disable_sescmd_history", MXS_MODULE_PARAM_BOOL, "false"}, + {"refresh_databases", MXS_MODULE_PARAM_BOOL, "true"}, + {"refresh_interval", MXS_MODULE_PARAM_COUNT, DEFAULT_REFRESH_INTERVAL}, + {"debug", MXS_MODULE_PARAM_BOOL, "false"}, + {"preferred_server", MXS_MODULE_PARAM_SERVER }, {MXS_END_MODULE_PARAMS} } };