This is to prevent cases in which only one node is left, but from its status it should be offline.
ProxySQL would normally set it offline and then back online.
This commit prevents it to change status twice.
@ -3633,34 +3633,75 @@ void MySQL_HostGroups_Manager::update_galera_set_offline(char *_hostname, int _p
mydb->execute(query);
//free(query);
converge_galera_config(_writer_hostgroup);
commit();
wrlock();
SQLite3_result*resultset2=NULL;
q=(char*)"SELECT writer_hostgroup, backup_writer_hostgroup, reader_hostgroup, offline_hostgroup FROM mysql_galera_hostgroups WHERE writer_hostgroup=%d";
q1=(char*)"SELECT DISTINCT hostgroup_id, hostname, port, gtid_port, weight, status, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment FROM mysql_servers JOIN mysql_galera_hostgroups ON hostgroup_id=writer_hostgroup OR hostgroup_id=backup_writer_hostgroup OR hostgroup_id=reader_hostgroup WHERE WHERE writer_hostgroup=%d ORDER BY hostgroup_id, hostname, port";
q2=(char*)"SELECT DISTINCT hostgroup_id, hostname, port, gtid_port, weight, status, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment FROM mysql_servers_incoming JOIN mysql_galera_hostgroups ON hostgroup_id=writer_hostgroup OR hostgroup_id=backup_writer_hostgroup OR hostgroup_id=reader_hostgroup WHERE WHERE writer_hostgroup=%d ORDER BY hostgroup_id, hostname, port";
q=(char*)"SELECT writer_hostgroup, backup_writer_hostgroup, reader_hostgroup, offline_hostgroup FROM mysql_galera_hostgroups WHERE writer_hostgroup=%d";
proxy_warning("Galera: skipping setting offline node %s:%d from hostroup %d because won't change the list of ONLINE nodes\n",_hostname,_port,_writer_hostgroup);