Host goes offline if maint_mode is true

pull/2490/head
Valentin Rakush 6 years ago
parent 3814c54f6e
commit 8b59af4ef2

@ -1716,16 +1716,13 @@ __exit_monitor_galera_thread:
if (row[7]) {
std::string s(row[7]);
std::transform(s.begin(), s.end(), s.begin(), ::toupper);
if (!strncmp("DISABLED",s.c_str(),8))
if (!strncmp("DISABLED",s.c_str(),8)) {
pxc_maint_mode=false;
else if (!strncmp("ENABLED",s.c_str(),7))
pxc_maint_mode=true;
}
else {
proxy_error("Wrong value for pxc_maint_mode %s\n", row[7]);
pxc_maint_mode=false;
pxc_maint_mode=true;
}
}
proxy_warning("TRACE : wsrep_local_state [%d], pxc_maint_mode %d\n", wsrep_local_state, pxc_maint_mode);
mysql_free_result(mmsd->result);
mmsd->result=NULL;
}
@ -1810,37 +1807,42 @@ __end_process_galera_result:
}
} else {
if (fields) { // if we didn't get any error, but fileds is NULL, we are likely hitting bug #1994
if (primary_partition == false || wsrep_desync == true || wsrep_local_state!=4) {
if (primary_partition == false) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"primary_partition=NO");
} else {
if (wsrep_desync == true) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"wsrep_desync=YES");
if (pxc_maint_mode) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"pxc_maint_mode=YES");
}
else {
if (primary_partition == false || wsrep_desync == true || wsrep_local_state!=4) {
if (primary_partition == false) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"primary_partition=NO");
} else {
char msg[80];
sprintf(msg,"wsrep_local_state=%d",wsrep_local_state);
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, msg);
if (wsrep_desync == true) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"wsrep_desync=YES");
} else {
char msg[80];
sprintf(msg,"wsrep_local_state=%d",wsrep_local_state);
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, msg);
}
}
}
} else {
//if (wsrep_sst_donor_rejects_queries || wsrep_reject_queries) {
} else {
//if (wsrep_sst_donor_rejects_queries || wsrep_reject_queries) {
if (wsrep_reject_queries) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"wsrep_reject_queries=true");
// } else {
// // wsrep_sst_donor_rejects_queries
// MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"wsrep_sst_donor_rejects_queries=true");
// }
} else {
if (read_only==true) {
if (wsrep_local_recv_queue > mmsd->max_transactions_behind) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"slave is lagging");
// } else {
// // wsrep_sst_donor_rejects_queries
// MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"wsrep_sst_donor_rejects_queries=true");
// }
} else {
if (read_only==true) {
if (wsrep_local_recv_queue > mmsd->max_transactions_behind) {
MyHGM->update_galera_set_offline(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"slave is lagging");
} else {
MyHGM->update_galera_set_read_only(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"read_only=YES");
}
} else {
MyHGM->update_galera_set_read_only(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup, (char *)"read_only=YES");
// the node is a writer
// TODO: for now we don't care about the number of writers
MyHGM->update_galera_set_writer(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup);
}
} else {
// the node is a writer
// TODO: for now we don't care about the number of writers
MyHGM->update_galera_set_writer(mmsd->hostname, mmsd->port, mmsd->writer_hostgroup);
}
}
}

@ -956,7 +956,6 @@ SQLite3_Server::SQLite3_Server() {
#ifdef TEST_GALERA
void SQLite3_Server::populate_galera_table(MySQL_Session *sess) {
// this function needs to be called with lock on mutex galera_mutex already acquired
proxy_warning("TRACE : populate galera table\n");
sessdb->execute("BEGIN TRANSACTION");
char *error=NULL;
int cols=0;
@ -970,9 +969,7 @@ void SQLite3_Server::populate_galera_table(MySQL_Session *sess) {
int hg_id = 2270+(cluster_id*10)+1;
char buf[1024];
sprintf(buf, (char *)"SELECT * FROM HOST_STATUS_GALERA WHERE hostgroup_id = %d LIMIT 1", hg_id);
proxy_warning("TRACE : buf %s\n", buf);
sessdb->execute_statement(buf, &error , &cols , &affected_rows , &resultset);
proxy_warning("TRACE : count %d\n", resultset->rows_count);
if (resultset->rows_count==0) {
//sessdb->execute("DELETE FROM HOST_STATUS_GALERA");
sqlite3_stmt *statement=NULL;
@ -981,7 +978,6 @@ void SQLite3_Server::populate_galera_table(MySQL_Session *sess) {
//rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0);
rc = sessdb->prepare_v2(query, &statement);
ASSERT_SQLITE_OK(rc, sessdb);
proxy_warning("TRACE : num servers%d\n", num_galera_servers[cluster_id]);
for (unsigned int i=0; i<num_galera_servers[cluster_id]; i++) {
string serverid = "";
serverid = "127.1." + std::to_string(cluster_id+1) + "." + std::to_string(i+11);
@ -1001,7 +997,6 @@ void SQLite3_Server::populate_galera_table(MySQL_Session *sess) {
char *pxt_maint_mode = rand()%2==0?(char*)"ENABLED":(char*)"DISABLED";
rc=sqlite3_bind_text(statement, 11, pxt_maint_mode, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, sessdb);
proxy_warning("TRACE : maint mode %s\n", pxt_maint_mode);
SAFE_SQLITE3_STEP2(statement);
rc=sqlite3_clear_bindings(statement); ASSERT_SQLITE_OK(rc, sessdb);
rc=sqlite3_reset(statement); ASSERT_SQLITE_OK(rc, sessdb);

Loading…
Cancel
Save