MXS-1775 Monitor loop and monitoring separated
In preparation for moving the monitor loop to MonitorInstance.
This commit is contained in:
@ -128,16 +128,7 @@ void AuroraMonitor::main()
|
|||||||
lock_monitor_servers(m_monitor);
|
lock_monitor_servers(m_monitor);
|
||||||
servers_status_pending_to_current(m_monitor);
|
servers_status_pending_to_current(m_monitor);
|
||||||
|
|
||||||
for (MXS_MONITORED_SERVER *ptr = m_monitor->monitored_servers; ptr; ptr = ptr->next)
|
tick();
|
||||||
{
|
|
||||||
update_server_status(m_monitor, ptr);
|
|
||||||
|
|
||||||
if (SERVER_IS_DOWN(ptr->server))
|
|
||||||
{
|
|
||||||
/** Hang up all DCBs connected to the failed server */
|
|
||||||
dcb_hangup_foreach(ptr->server);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* After updating the status of all servers, check if monitor events
|
* After updating the status of all servers, check if monitor events
|
||||||
@ -164,6 +155,20 @@ void AuroraMonitor::main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AuroraMonitor::tick()
|
||||||
|
{
|
||||||
|
for (MXS_MONITORED_SERVER *ptr = m_monitor->monitored_servers; ptr; ptr = ptr->next)
|
||||||
|
{
|
||||||
|
update_server_status(m_monitor, ptr);
|
||||||
|
|
||||||
|
if (SERVER_IS_DOWN(ptr->server))
|
||||||
|
{
|
||||||
|
/** Hang up all DCBs connected to the failed server */
|
||||||
|
dcb_hangup_foreach(ptr->server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool AuroraMonitor::has_sufficient_permissions() const
|
bool AuroraMonitor::has_sufficient_permissions() const
|
||||||
{
|
{
|
||||||
return check_monitor_permissions(m_monitor, "SELECT @@aurora_server_id, server_id FROM "
|
return check_monitor_permissions(m_monitor, "SELECT @@aurora_server_id, server_id FROM "
|
||||||
|
@ -37,6 +37,7 @@ private:
|
|||||||
|
|
||||||
bool has_sufficient_permissions() const;
|
bool has_sufficient_permissions() const;
|
||||||
void configure(const MXS_CONFIG_PARAMETER* params);
|
void configure(const MXS_CONFIG_PARAMETER* params);
|
||||||
|
void tick();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
};
|
};
|
||||||
|
@ -477,11 +477,30 @@ void GaleraMonitor::main()
|
|||||||
|
|
||||||
nrounds += 1;
|
nrounds += 1;
|
||||||
|
|
||||||
int is_cluster = 0;
|
|
||||||
|
|
||||||
lock_monitor_servers(m_monitor);
|
lock_monitor_servers(m_monitor);
|
||||||
servers_status_pending_to_current(m_monitor);
|
servers_status_pending_to_current(m_monitor);
|
||||||
|
|
||||||
|
tick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* After updating the status of all servers, check if monitor events
|
||||||
|
* need to be launched.
|
||||||
|
*/
|
||||||
|
mon_process_state_changes(m_monitor, m_script.empty() ? NULL : m_script.c_str(), m_events);
|
||||||
|
|
||||||
|
mon_hangup_failed_servers(m_monitor);
|
||||||
|
|
||||||
|
servers_status_current_to_pending(m_monitor);
|
||||||
|
|
||||||
|
store_server_journal(m_monitor, NULL);
|
||||||
|
release_monitor_servers(m_monitor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GaleraMonitor::tick()
|
||||||
|
{
|
||||||
|
int is_cluster = 0;
|
||||||
|
|
||||||
MXS_MONITORED_SERVER* ptr = m_monitor->monitored_servers;
|
MXS_MONITORED_SERVER* ptr = m_monitor->monitored_servers;
|
||||||
while (ptr)
|
while (ptr)
|
||||||
{
|
{
|
||||||
@ -582,16 +601,6 @@ void GaleraMonitor::main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* After updating the status of all servers, check if monitor events
|
|
||||||
* need to be launched.
|
|
||||||
*/
|
|
||||||
mon_process_state_changes(m_monitor, m_script.empty() ? NULL : m_script.c_str(), m_events);
|
|
||||||
|
|
||||||
mon_hangup_failed_servers(m_monitor);
|
|
||||||
|
|
||||||
servers_status_current_to_pending(m_monitor);
|
|
||||||
|
|
||||||
/* Set the global var "wsrep_sst_donor"
|
/* Set the global var "wsrep_sst_donor"
|
||||||
* with a sorted list of "wsrep_node_name" for slave nodes
|
* with a sorted list of "wsrep_node_name" for slave nodes
|
||||||
*/
|
*/
|
||||||
@ -599,10 +608,6 @@ void GaleraMonitor::main()
|
|||||||
{
|
{
|
||||||
update_sst_donor_nodes(is_cluster);
|
update_sst_donor_nodes(is_cluster);
|
||||||
}
|
}
|
||||||
|
|
||||||
store_server_journal(m_monitor, NULL);
|
|
||||||
release_monitor_servers(m_monitor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,6 +93,7 @@ private:
|
|||||||
|
|
||||||
bool has_sufficient_permissions() const;
|
bool has_sufficient_permissions() const;
|
||||||
void configure(const MXS_CONFIG_PARAMETER* param);
|
void configure(const MXS_CONFIG_PARAMETER* param);
|
||||||
|
void tick();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
};
|
};
|
||||||
|
@ -192,12 +192,8 @@ void GRMon::main()
|
|||||||
lock_monitor_servers(m_monitor);
|
lock_monitor_servers(m_monitor);
|
||||||
servers_status_pending_to_current(m_monitor);
|
servers_status_pending_to_current(m_monitor);
|
||||||
|
|
||||||
for (MXS_MONITORED_SERVER *ptr = m_monitor->monitored_servers; ptr; ptr = ptr->next)
|
tick();
|
||||||
{
|
|
||||||
update_server_status(m_monitor, ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
mon_hangup_failed_servers(m_monitor);
|
|
||||||
/**
|
/**
|
||||||
* After updating the status of all servers, check if monitor events
|
* After updating the status of all servers, check if monitor events
|
||||||
* need to be launched.
|
* need to be launched.
|
||||||
@ -206,6 +202,7 @@ void GRMon::main()
|
|||||||
m_script.empty() ? NULL : m_script.c_str(),
|
m_script.empty() ? NULL : m_script.c_str(),
|
||||||
m_events);
|
m_events);
|
||||||
|
|
||||||
|
mon_hangup_failed_servers(m_monitor);
|
||||||
servers_status_current_to_pending(m_monitor);
|
servers_status_current_to_pending(m_monitor);
|
||||||
store_server_journal(m_monitor, NULL);
|
store_server_journal(m_monitor, NULL);
|
||||||
release_monitor_servers(m_monitor);
|
release_monitor_servers(m_monitor);
|
||||||
@ -225,6 +222,14 @@ void GRMon::main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GRMon::tick()
|
||||||
|
{
|
||||||
|
for (MXS_MONITORED_SERVER *ptr = m_monitor->monitored_servers; ptr; ptr = ptr->next)
|
||||||
|
{
|
||||||
|
update_server_status(m_monitor, ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The module entry point routine. It is this routine that
|
* The module entry point routine. It is this routine that
|
||||||
* must populate the structure that is referred to as the
|
* must populate the structure that is referred to as the
|
||||||
|
@ -39,6 +39,7 @@ private:
|
|||||||
|
|
||||||
bool has_sufficient_permissions() const;
|
bool has_sufficient_permissions() const;
|
||||||
void configure(const MXS_CONFIG_PARAMETER* params);
|
void configure(const MXS_CONFIG_PARAMETER* params);
|
||||||
|
void tick();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
};
|
};
|
||||||
|
@ -467,6 +467,23 @@ void MMMonitor::main()
|
|||||||
lock_monitor_servers(m_monitor);
|
lock_monitor_servers(m_monitor);
|
||||||
servers_status_pending_to_current(m_monitor);
|
servers_status_pending_to_current(m_monitor);
|
||||||
|
|
||||||
|
tick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* After updating the status of all servers, check if monitor events
|
||||||
|
* need to be launched.
|
||||||
|
*/
|
||||||
|
mon_process_state_changes(m_monitor, m_script.empty() ? NULL : m_script.c_str(), m_events);
|
||||||
|
|
||||||
|
mon_hangup_failed_servers(m_monitor);
|
||||||
|
servers_status_current_to_pending(m_monitor);
|
||||||
|
store_server_journal(m_monitor, m_master);
|
||||||
|
release_monitor_servers(m_monitor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMMonitor::tick()
|
||||||
|
{
|
||||||
/* start from the first server in the list */
|
/* start from the first server in the list */
|
||||||
MXS_MONITORED_SERVER* ptr = m_monitor->monitored_servers;
|
MXS_MONITORED_SERVER* ptr = m_monitor->monitored_servers;
|
||||||
|
|
||||||
@ -530,18 +547,6 @@ void MMMonitor::main()
|
|||||||
}
|
}
|
||||||
ptr = ptr->next;
|
ptr = ptr->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* After updating the status of all servers, check if monitor events
|
|
||||||
* need to be launched.
|
|
||||||
*/
|
|
||||||
mon_process_state_changes(m_monitor, m_script.empty() ? NULL : m_script.c_str(), m_events);
|
|
||||||
|
|
||||||
mon_hangup_failed_servers(m_monitor);
|
|
||||||
servers_status_current_to_pending(m_monitor);
|
|
||||||
store_server_journal(m_monitor, m_master);
|
|
||||||
release_monitor_servers(m_monitor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,6 +43,7 @@ private:
|
|||||||
|
|
||||||
bool has_sufficient_permissions() const;
|
bool has_sufficient_permissions() const;
|
||||||
void configure(const MXS_CONFIG_PARAMETER* params);
|
void configure(const MXS_CONFIG_PARAMETER* params);
|
||||||
|
void tick();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
};
|
};
|
||||||
|
@ -272,6 +272,23 @@ void NDBCMonitor::main()
|
|||||||
lock_monitor_servers(m_monitor);
|
lock_monitor_servers(m_monitor);
|
||||||
servers_status_pending_to_current(m_monitor);
|
servers_status_pending_to_current(m_monitor);
|
||||||
|
|
||||||
|
tick();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* After updating the status of all servers, check if monitor events
|
||||||
|
* need to be launched.
|
||||||
|
*/
|
||||||
|
mon_process_state_changes(m_monitor, m_script.empty() ? NULL : m_script.c_str(), m_events);
|
||||||
|
|
||||||
|
mon_hangup_failed_servers(m_monitor);
|
||||||
|
servers_status_current_to_pending(m_monitor);
|
||||||
|
store_server_journal(m_monitor, NULL);
|
||||||
|
release_monitor_servers(m_monitor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NDBCMonitor::tick()
|
||||||
|
{
|
||||||
MXS_MONITORED_SERVER *ptr = m_monitor->monitored_servers;
|
MXS_MONITORED_SERVER *ptr = m_monitor->monitored_servers;
|
||||||
while (ptr)
|
while (ptr)
|
||||||
{
|
{
|
||||||
@ -289,16 +306,4 @@ void NDBCMonitor::main()
|
|||||||
|
|
||||||
ptr = ptr->next;
|
ptr = ptr->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* After updating the status of all servers, check if monitor events
|
|
||||||
* need to be launched.
|
|
||||||
*/
|
|
||||||
mon_process_state_changes(m_monitor, m_script.empty() ? NULL : m_script.c_str(), m_events);
|
|
||||||
|
|
||||||
mon_hangup_failed_servers(m_monitor);
|
|
||||||
servers_status_current_to_pending(m_monitor);
|
|
||||||
store_server_journal(m_monitor, NULL);
|
|
||||||
release_monitor_servers(m_monitor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ private:
|
|||||||
|
|
||||||
bool has_sufficient_permissions() const;
|
bool has_sufficient_permissions() const;
|
||||||
void configure(const MXS_CONFIG_PARAMETER* params);
|
void configure(const MXS_CONFIG_PARAMETER* params);
|
||||||
|
void tick();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user