Disable parameters on main worker

Disabling the parameter on the main worker prevents deadlocks if the
parameter is disabled at the same time a monitor diagnostic is executed.
This commit is contained in:
Markus Mäkelä 2018-08-02 09:50:18 +03:00
parent 0d934476b0
commit d22b02047f
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19
2 changed files with 11 additions and 6 deletions

View File

@ -958,12 +958,17 @@ void MariaDBMonitor::set_slave_heartbeat(MariaDBServer* server)
*
* @param setting_name Setting to disable
*/
void MariaDBMonitor::disable_setting(const char* setting)
void MariaDBMonitor::disable_setting(const std::string& setting)
{
MXS_CONFIG_PARAMETER p = {};
p.name = const_cast<char*>(setting);
p.value = const_cast<char*>("false");
monitor_add_parameters(m_monitor, &p);
Worker* worker = static_cast<Worker*>(mxs_rworker_get(MXS_RWORKER_MAIN));
worker->post([=]()
{
MXS_CONFIG_PARAMETER p = {};
p.name = const_cast<char*>(setting.c_str());
p.value = const_cast<char*>("false");
monitor_add_parameters(m_monitor, &p);
}, NULL, EXECUTE_AUTO);
}
/**

View File

@ -264,7 +264,7 @@ private:
int seconds_remaining);
// Other methods
void disable_setting(const char* setting);
void disable_setting(const std::string& setting);
bool check_sql_files();
void enforce_read_only_on_slaves();
};