From c0bc611f037314ed4cf5244aa34977a9ce4a4843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 26 Sep 2018 10:58:07 +0300 Subject: [PATCH] Remove unnecessary readconnroute code The check for a closed session should never be needed as the core correctly orders the calls to the module functions. The version numbering was also not used. Fixed the incrementation of the query counter so that it uses relaxed atomic operations. --- .../routing/readconnroute/readconnection.h | 2 - .../routing/readconnroute/readconnroute.cc | 38 ++++++------------- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/server/modules/routing/readconnroute/readconnection.h b/server/modules/routing/readconnroute/readconnection.h index 2d7a113da..741bf7b30 100644 --- a/server/modules/routing/readconnroute/readconnection.h +++ b/server/modules/routing/readconnroute/readconnection.h @@ -37,8 +37,6 @@ */ struct ROUTER_CLIENT_SES : MXS_ROUTER_SESSION { - int rses_versno;/*< even = no active update, else odd */ - bool rses_closed;/*< true when closeSession is called */ SERVER_REF* backend; /*< Backend used by the client session */ DCB* backend_dcb;/*< DCB Connection to the backend */ DCB* client_dcb; /**< Client DCB */ diff --git a/server/modules/routing/readconnroute/readconnroute.cc b/server/modules/routing/readconnroute/readconnroute.cc index b8ced5af0..dbf18e6c5 100644 --- a/server/modules/routing/readconnroute/readconnroute.cc +++ b/server/modules/routing/readconnroute/readconnroute.cc @@ -484,18 +484,11 @@ static void closeSession(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_sessio } /** Log routing failure due to closed session */ -static void log_closed_session(mxs_mysql_cmd_t mysql_command, - bool is_closed, - SERVER_REF* ref, - bool valid) +static void log_closed_session(mxs_mysql_cmd_t mysql_command, SERVER_REF* ref) { char msg[MAX_SERVER_ADDRESS_LEN + 200] = ""; // Extra space for message - if (is_closed) - { - sprintf(msg, "Session is closed."); - } - else if (server_is_down(ref->server)) + if (server_is_down(ref->server)) { sprintf(msg, "Server '%s' is down.", ref->server->name); } @@ -503,16 +496,12 @@ static void log_closed_session(mxs_mysql_cmd_t mysql_command, { sprintf(msg, "Server '%s' is in maintenance.", ref->server->name); } - else if (!valid) + else { - sprintf(msg, - "Server '%s' no longer qualifies as a target server.", - ref->server->name); + sprintf(msg, "Server '%s' no longer qualifies as a target server.", ref->server->name); } - MXS_ERROR("Failed to route MySQL command %d to backend server. %s", - mysql_command, - msg); + MXS_ERROR("Failed to route MySQL command %d to backend server. %s", mysql_command, msg); } /** @@ -573,26 +562,23 @@ static int routeQuery(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_session, ROUTER_INSTANCE* inst = (ROUTER_INSTANCE*) instance; ROUTER_CLIENT_SES* router_cli_ses = (ROUTER_CLIENT_SES*) router_session; int rc = 0; - DCB* backend_dcb; MySQLProtocol* proto = (MySQLProtocol*)router_cli_ses->client_dcb->protocol; mxs_mysql_cmd_t mysql_command = proto->current_command; - bool rses_is_closed = router_cli_ses->rses_closed; - inst->stats.n_queries++; + mxb::atomic::add(&inst->stats.n_queries, 1, mxb::atomic::RELAXED); // Due to the streaming nature of readconnroute, this is not accurate mxb::atomic::add(&router_cli_ses->backend->server->stats.packets, 1, mxb::atomic::RELAXED); - backend_dcb = router_cli_ses->backend_dcb; - bool valid; + DCB* backend_dcb = router_cli_ses->backend_dcb; + mxb_assert(backend_dcb); char* trc = NULL; - if (rses_is_closed || backend_dcb == NULL - || (valid = !connection_is_valid(inst, router_cli_ses))) + if (!connection_is_valid(inst, router_cli_ses)) { - log_closed_session(mysql_command, rses_is_closed, router_cli_ses->backend, valid); + log_closed_session(mysql_command, router_cli_ses->backend); gwbuf_free(queue); - goto return_rc; + return rc; } switch (mysql_command) @@ -622,8 +608,6 @@ static int routeQuery(MXS_ROUTER* instance, MXS_ROUTER_SESSION* router_session, trc ? trc : ""); MXS_FREE(trc); -return_rc: - return rc; }