MXS-1775 Monitor loop and monitoring separated

In preparation for moving the monitor loop to MonitorInstance.
This commit is contained in:
Johan Wikman
2018-05-16 15:28:49 +03:00
parent 6fff5a4f23
commit 2396b555f8
10 changed files with 234 additions and 204 deletions

View File

@ -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 "

View File

@ -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();
}; };

View File

@ -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);
}
} }
/** /**

View File

@ -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();
}; };

View File

@ -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

View File

@ -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();
}; };

View File

@ -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);
}
} }
/** /**

View File

@ -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();
}; };

View File

@ -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);
}
} }

View File

@ -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();
}; };