Added duplicate server check to prevent redundant server inspections, that can cause unique constraint error on mysql_server_galera_log table.

pull/4351/head
Rahim Kanji 3 years ago
parent 99e0e963ed
commit 90e3247bf3

@ -8014,7 +8014,7 @@ bool MySQL_Monitor::monitor_galera_process_ready_tasks(const std::vector<MySQL_M
void MySQL_Monitor::monitor_galera_async() {
std::vector<std::unique_ptr<MySQL_Monitor_State_Data>> mmsds;
std::set<std::string> checked_servers;
pthread_mutex_lock(&galera_mutex);
assert(Galera_Hosts_resultset);
mmsds.reserve(Galera_Hosts_resultset->rows_count);
@ -8022,6 +8022,11 @@ void MySQL_Monitor::monitor_galera_async() {
for (std::vector<SQLite3_row*>::iterator it = Galera_Hosts_resultset->rows.begin(); it != Galera_Hosts_resultset->rows.end(); ++it) {
const SQLite3_row* r = *it;
auto ret = checked_servers.insert(std::string(r->fields[1]) + ":" + std::string(r->fields[2]));
if (ret.second == false) // duplicate server entry
continue;
bool rc_ping = server_responds_to_ping(r->fields[1], atoi(r->fields[2]));
if (rc_ping) { // only if server is responding to pings

Loading…
Cancel
Save