From 37f693fc0a1e3d89d81333297aca26382a91838e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Tue, 11 Sep 2018 07:29:04 +0300 Subject: [PATCH] MXS-1632: Filter out inactive servers The statistics are only returned for active servers. --- .../routing/readwritesplit/readwritesplit.cc | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/server/modules/routing/readwritesplit/readwritesplit.cc b/server/modules/routing/readwritesplit/readwritesplit.cc index 8e0d97ab2..ca9c63307 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.cc +++ b/server/modules/routing/readwritesplit/readwritesplit.cc @@ -121,7 +121,10 @@ RWSplit::SrvStatMap RWSplit::all_server_stats() const { for (const auto& b : a) { - stats[b.first] += b.second; + if (b.first->is_active) + { + stats[b.first] += b.second; + } } } @@ -383,6 +386,7 @@ void RWSplit::diagnostics(DCB* dcb) dcb_printf(dcb, " Server Total Read Write\n"); for (const auto& s : srv_stats) { + mxb_assert(s.second.total == s.second.read + s.second.write); dcb_printf(dcb, " %s %10lu %10lu %10lu\n", s.first->name, @@ -414,25 +418,21 @@ json_t* RWSplit::diagnostics_json() const json_object_set_new(rval, "weightby", json_string(weightby)); } - auto srv_stats = all_server_stats(); + json_t* arr = json_array(); - if (!srv_stats.empty()) + for (const auto& a : all_server_stats()) { - json_t* arr = json_array(); - - for (const auto& a : srv_stats) - { - json_t* obj = json_object(); - json_object_set_new(obj, "id", json_string(a.first->name)); - json_object_set_new(obj, "total", json_integer(a.second.total)); - json_object_set_new(obj, "read", json_integer(a.second.read)); - json_object_set_new(obj, "write", json_integer(a.second.write)); - json_array_append_new(arr, obj); - } - - json_object_set_new(rval, "server_query_statistics", arr); + mxb_assert(a.second.total == a.second.read + a.second.write); + json_t* obj = json_object(); + json_object_set_new(obj, "id", json_string(a.first->name)); + json_object_set_new(obj, "total", json_integer(a.second.total)); + json_object_set_new(obj, "read", json_integer(a.second.read)); + json_object_set_new(obj, "write", json_integer(a.second.write)); + json_array_append_new(arr, obj); } + json_object_set_new(rval, "server_query_statistics", arr); + return rval; }