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:
@ -958,12 +958,17 @@ void MariaDBMonitor::set_slave_heartbeat(MariaDBServer* server)
|
|||||||
*
|
*
|
||||||
* @param setting_name Setting to disable
|
* @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 = {};
|
Worker* worker = static_cast<Worker*>(mxs_rworker_get(MXS_RWORKER_MAIN));
|
||||||
p.name = const_cast<char*>(setting);
|
|
||||||
p.value = const_cast<char*>("false");
|
worker->post([=]()
|
||||||
monitor_add_parameters(m_monitor, &p);
|
{
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -264,7 +264,7 @@ private:
|
|||||||
int seconds_remaining);
|
int seconds_remaining);
|
||||||
|
|
||||||
// Other methods
|
// Other methods
|
||||||
void disable_setting(const char* setting);
|
void disable_setting(const std::string& setting);
|
||||||
bool check_sql_files();
|
bool check_sql_files();
|
||||||
void enforce_read_only_on_slaves();
|
void enforce_read_only_on_slaves();
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user