From fbd63122395e7b2065da93de7a018c7387bb6eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jaramago=20Fern=C3=A1ndez?= Date: Mon, 1 Aug 2022 16:56:37 +0200 Subject: [PATCH] Filter 'OFFLINE_HARD' servers for stored 'runtime_mysql_servers' resultset --- lib/MySQL_HostGroups_Manager.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/MySQL_HostGroups_Manager.cpp b/lib/MySQL_HostGroups_Manager.cpp index c7a0b24d6..9287e34b1 100644 --- a/lib/MySQL_HostGroups_Manager.cpp +++ b/lib/MySQL_HostGroups_Manager.cpp @@ -1956,6 +1956,25 @@ bool MySQL_HostGroups_Manager::commit( SQLite3_result* resultset = NULL; mydb->execute_statement(MYHGM_GEN_ADMIN_RUNTIME_SERVERS, &error, &cols, &affected_rows, &resultset); + + // Remove 'OFFLINE_HARD' servers since they are not relevant to propagate to other Cluster + // nodes, or relevant for checksum computation. + const size_t init_row_count = resultset->rows_count; + size_t rm_rows_count = 0; + const auto is_offline_server = [&rm_rows_count] (SQLite3_row* row) { + if (strcasecmp(row->fields[4], "OFFLINE_HARD") == 0) { + rm_rows_count += 1; + return true; + } else { + return false; + } + }; + resultset->rows.erase( + std::remove_if(resultset->rows.begin(), resultset->rows.end(), is_offline_server), + resultset->rows.end() + ); + resultset->rows_count = init_row_count - rm_rows_count; + save_runtime_mysql_servers(resultset); } else { save_runtime_mysql_servers(runtime_mysql_servers);