MXS-1775 Introduce maxscale::MonitorInstance
- All monitors (but MariaDBMon for the time being) inherit from that. - All common member variables moved to that class. Still manipulated in derived classes. In subsequent commits common functionality will be moved to that class.
This commit is contained in:
@ -14,10 +14,31 @@
|
|||||||
|
|
||||||
#include <maxscale/cppdefs.hh>
|
#include <maxscale/cppdefs.hh>
|
||||||
#include <maxscale/monitor.h>
|
#include <maxscale/monitor.h>
|
||||||
|
#include <maxscale/thread.h>
|
||||||
|
|
||||||
namespace maxscale
|
namespace maxscale
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class MonitorInstance : public MXS_MONITOR_INSTANCE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MonitorInstance(const MonitorInstance&) = delete;
|
||||||
|
MonitorInstance& operator = (const MonitorInstance&) = delete;
|
||||||
|
|
||||||
|
virtual ~MonitorInstance();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
MonitorInstance(MXS_MONITOR* pMonitor);
|
||||||
|
|
||||||
|
int m_status; /**< The current status of the monitor. */
|
||||||
|
THREAD m_thread; /**< The thread handle of the monitoring thread. */
|
||||||
|
MXS_MONITOR* m_monitor; /**< The generic monitor structure. */
|
||||||
|
int32_t m_shutdown; /**< Non-zero if the monitor should shut down. */
|
||||||
|
char* m_script; /**< Launchable script. */
|
||||||
|
uint64_t m_events; /**< Enabled monitor events. */
|
||||||
|
bool m_checked; /**< Whether server access has been checked. */
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The purpose of the template MonitorApi is to provide an implementation
|
* The purpose of the template MonitorApi is to provide an implementation
|
||||||
* of the monitor C-API. The template is instantiated with a class that
|
* of the monitor C-API. The template is instantiated with a class that
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file monitor.c - The monitor module management routines
|
* @file monitor.c - The monitor module management routines
|
||||||
*/
|
*/
|
||||||
#include <maxscale/monitor.h>
|
#include <maxscale/monitor.hh>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -2502,3 +2502,24 @@ int mon_config_get_servers(const MXS_CONFIG_PARAMETER* params, const char* key,
|
|||||||
}
|
}
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace maxscale
|
||||||
|
{
|
||||||
|
|
||||||
|
MonitorInstance::MonitorInstance(MXS_MONITOR* pMonitor)
|
||||||
|
: m_status(0)
|
||||||
|
, m_thread(0)
|
||||||
|
, m_monitor(pMonitor)
|
||||||
|
, m_shutdown(0)
|
||||||
|
, m_script(NULL)
|
||||||
|
, m_events(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
MonitorInstance::~MonitorInstance()
|
||||||
|
{
|
||||||
|
ss_dassert(!m_thread);
|
||||||
|
ss_dassert(!m_script);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -26,19 +26,12 @@
|
|||||||
|
|
||||||
|
|
||||||
AuroraMonitor::AuroraMonitor(MXS_MONITOR* monitor)
|
AuroraMonitor::AuroraMonitor(MXS_MONITOR* monitor)
|
||||||
: m_shutdown(false)
|
: maxscale::MonitorInstance(monitor)
|
||||||
, m_thread(0)
|
|
||||||
, m_script(NULL)
|
|
||||||
, m_events(0)
|
|
||||||
, m_monitor(monitor)
|
|
||||||
, m_checked(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
AuroraMonitor::~AuroraMonitor()
|
AuroraMonitor::~AuroraMonitor()
|
||||||
{
|
{
|
||||||
ss_dassert(!m_thread);
|
|
||||||
ss_dassert(!m_script);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* @file auroramon.hh - The Aurora monitor
|
* @file auroramon.hh - The Aurora monitor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class AuroraMonitor : public MXS_MONITOR_INSTANCE
|
class AuroraMonitor : public maxscale::MonitorInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AuroraMonitor(const AuroraMonitor&) = delete;
|
AuroraMonitor(const AuroraMonitor&) = delete;
|
||||||
@ -34,13 +34,6 @@ public:
|
|||||||
json_t* diagnostics_json() const;
|
json_t* diagnostics_json() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_shutdown; /**< True if the monitor is stopped */
|
|
||||||
THREAD m_thread; /**< Monitor thread */
|
|
||||||
char* m_script; /**< Launchable script */
|
|
||||||
uint64_t m_events; /**< Enabled monitor events */
|
|
||||||
MXS_MONITOR* m_monitor; /**< Pointer to generic monitor structure */
|
|
||||||
bool m_checked; /**< Whether server access has been checked */
|
|
||||||
|
|
||||||
AuroraMonitor(MXS_MONITOR* monitor);
|
AuroraMonitor(MXS_MONITOR* monitor);
|
||||||
~AuroraMonitor();
|
~AuroraMonitor();
|
||||||
|
|
||||||
|
@ -100,22 +100,16 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
|||||||
|
|
||||||
|
|
||||||
GaleraMonitor::GaleraMonitor(MXS_MONITOR *mon)
|
GaleraMonitor::GaleraMonitor(MXS_MONITOR *mon)
|
||||||
: m_thread(0)
|
: maxscale::MonitorInstance(mon)
|
||||||
, m_shutdown(0)
|
|
||||||
, m_status(0)
|
|
||||||
, m_id(MXS_MONITOR_DEFAULT_ID)
|
, m_id(MXS_MONITOR_DEFAULT_ID)
|
||||||
, m_disableMasterFailback(0)
|
, m_disableMasterFailback(0)
|
||||||
, m_availableWhenDonor(0)
|
, m_availableWhenDonor(0)
|
||||||
, m_disableMasterRoleSetting(0)
|
, m_disableMasterRoleSetting(0)
|
||||||
, m_master(NULL)
|
, m_master(NULL)
|
||||||
, m_script(NULL)
|
|
||||||
, m_root_node_as_master(false)
|
, m_root_node_as_master(false)
|
||||||
, m_use_priority(false)
|
, m_use_priority(false)
|
||||||
, m_events(0)
|
|
||||||
, m_set_donor_nodes(false)
|
, m_set_donor_nodes(false)
|
||||||
, m_galera_nodes_info(NULL)
|
, m_galera_nodes_info(NULL)
|
||||||
, m_monitor(mon)
|
|
||||||
, m_checked(false)
|
|
||||||
{
|
{
|
||||||
HASHTABLE *nodes_info = hashtable_alloc(MAX_NUM_SLAVES,
|
HASHTABLE *nodes_info = hashtable_alloc(MAX_NUM_SLAVES,
|
||||||
hashtable_item_strhash,
|
hashtable_item_strhash,
|
||||||
|
@ -52,7 +52,7 @@ typedef struct galera_cluster_info
|
|||||||
} GALERA_CLUSTER_INFO;
|
} GALERA_CLUSTER_INFO;
|
||||||
|
|
||||||
|
|
||||||
class GaleraMonitor : public MXS_MONITOR_INSTANCE
|
class GaleraMonitor : public maxscale::MonitorInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GaleraMonitor(const GaleraMonitor&) = delete;
|
GaleraMonitor(const GaleraMonitor&) = delete;
|
||||||
@ -66,25 +66,18 @@ public:
|
|||||||
json_t* diagnostics_json() const;
|
json_t* diagnostics_json() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
THREAD m_thread; /**< Monitor thread */
|
|
||||||
int m_shutdown; /**< Flag to shutdown the monitor thread */
|
|
||||||
int m_status; /**< Monitor status */
|
|
||||||
unsigned long m_id; /**< Monitor ID */
|
unsigned long m_id; /**< Monitor ID */
|
||||||
int m_disableMasterFailback; /**< Monitor flag for Galera Cluster Master failback */
|
int m_disableMasterFailback; /**< Monitor flag for Galera Cluster Master failback */
|
||||||
int m_availableWhenDonor; /**< Monitor flag for Galera Cluster Donor availability */
|
int m_availableWhenDonor; /**< Monitor flag for Galera Cluster Donor availability */
|
||||||
bool m_disableMasterRoleSetting; /**< Monitor flag to disable setting master role */
|
bool m_disableMasterRoleSetting; /**< Monitor flag to disable setting master role */
|
||||||
MXS_MONITORED_SERVER *m_master; /**< Master server for MySQL Master/Slave replication */
|
MXS_MONITORED_SERVER *m_master; /**< Master server for MySQL Master/Slave replication */
|
||||||
char* m_script; /**< Launchable script */
|
|
||||||
bool m_root_node_as_master; /**< Whether we require that the Master should
|
bool m_root_node_as_master; /**< Whether we require that the Master should
|
||||||
* have a wsrep_local_index of 0 */
|
* have a wsrep_local_index of 0 */
|
||||||
bool m_use_priority; /**< Use server priorities */
|
bool m_use_priority; /**< Use server priorities */
|
||||||
uint64_t m_events; /**< Enabled monitor events */
|
|
||||||
bool m_set_donor_nodes; /**< set the wrep_sst_donor variable with an
|
bool m_set_donor_nodes; /**< set the wrep_sst_donor variable with an
|
||||||
* ordered list of nodes */
|
* ordered list of nodes */
|
||||||
HASHTABLE *m_galera_nodes_info; /**< Contains Galera Cluster variables of all nodes */
|
HASHTABLE *m_galera_nodes_info; /**< Contains Galera Cluster variables of all nodes */
|
||||||
GALERA_CLUSTER_INFO m_cluster_info; /**< Contains Galera cluster info */
|
GALERA_CLUSTER_INFO m_cluster_info; /**< Contains Galera cluster info */
|
||||||
MXS_MONITOR* m_monitor; /**< Pointer to generic monitor structure */
|
|
||||||
bool m_checked; /**< Whether server access has been checked */
|
|
||||||
|
|
||||||
GaleraMonitor(MXS_MONITOR* monitor);
|
GaleraMonitor(MXS_MONITOR* monitor);
|
||||||
~GaleraMonitor();
|
~GaleraMonitor();
|
||||||
|
@ -26,12 +26,10 @@
|
|||||||
#include <mysqld_error.h>
|
#include <mysqld_error.h>
|
||||||
|
|
||||||
|
|
||||||
GRMon::GRMon(MXS_MONITOR* monitor):
|
GRMon::GRMon(MXS_MONITOR* monitor)
|
||||||
m_shutdown(0),
|
: MonitorInstance(monitor)
|
||||||
m_master(NULL),
|
, m_master(NULL)
|
||||||
m_script(NULL),
|
, m_script(NULL)
|
||||||
m_events(0),
|
|
||||||
m_monitor(monitor)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* @file grmon.hh A MySQL Group Replication cluster monitor
|
* @file grmon.hh A MySQL Group Replication cluster monitor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class GRMon : public MXS_MONITOR_INSTANCE
|
class GRMon : public maxscale::MonitorInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GRMon(const GRMon&) = delete;
|
GRMon(const GRMon&) = delete;
|
||||||
@ -34,12 +34,8 @@ public:
|
|||||||
json_t* diagnostics_json() const;
|
json_t* diagnostics_json() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
THREAD m_thread; /**< Monitor thread */
|
|
||||||
int m_shutdown; /**< Flag to shutdown the monitor thread */
|
|
||||||
MXS_MONITORED_SERVER* m_master; /**< The master server */
|
MXS_MONITORED_SERVER* m_master; /**< The master server */
|
||||||
std::string m_script;
|
std::string m_script;
|
||||||
uint64_t m_events; /**< Enabled events */
|
|
||||||
MXS_MONITOR* m_monitor;
|
|
||||||
|
|
||||||
GRMon(MXS_MONITOR* monitor);
|
GRMon(MXS_MONITOR* monitor);
|
||||||
~GRMon();
|
~GRMon();
|
||||||
|
@ -85,16 +85,10 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
|||||||
/*lint +e14 */
|
/*lint +e14 */
|
||||||
|
|
||||||
MMMonitor::MMMonitor(MXS_MONITOR *monitor)
|
MMMonitor::MMMonitor(MXS_MONITOR *monitor)
|
||||||
: m_thread(0)
|
: maxscale::MonitorInstance(monitor)
|
||||||
, m_shutdown(0)
|
|
||||||
, m_status(0)
|
|
||||||
, m_id(MXS_MONITOR_DEFAULT_ID)
|
, m_id(MXS_MONITOR_DEFAULT_ID)
|
||||||
, m_detectStaleMaster(false)
|
, m_detectStaleMaster(false)
|
||||||
, m_master(NULL)
|
, m_master(NULL)
|
||||||
, m_script(NULL)
|
|
||||||
, m_events(0)
|
|
||||||
, m_monitor(monitor)
|
|
||||||
, m_checked(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* @file mmmon.hh - The Multi-Master monitor
|
* @file mmmon.hh - The Multi-Master monitor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class MMMonitor : public MXS_MONITOR_INSTANCE
|
class MMMonitor : public maxscale::MonitorInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MMMonitor(const MMMonitor&) = delete;
|
MMMonitor(const MMMonitor&) = delete;
|
||||||
@ -34,16 +34,9 @@ public:
|
|||||||
json_t* diagnostics_json() const;
|
json_t* diagnostics_json() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
THREAD m_thread; /**< Monitor thread */
|
|
||||||
int m_shutdown; /**< Flag to shutdown the monitor thread */
|
|
||||||
int m_status; /**< Monitor status */
|
|
||||||
unsigned long m_id; /**< Monitor ID */
|
unsigned long m_id; /**< Monitor ID */
|
||||||
int m_detectStaleMaster; /**< Monitor flag for Stale Master detection */
|
int m_detectStaleMaster; /**< Monitor flag for Stale Master detection */
|
||||||
MXS_MONITORED_SERVER *m_master; /**< Master server for Master/Slave replication */
|
MXS_MONITORED_SERVER *m_master; /**< Master server for Master/Slave replication */
|
||||||
char* m_script; /**< Script to call when state changes occur on servers */
|
|
||||||
uint64_t m_events; /**< enabled events */
|
|
||||||
MXS_MONITOR* m_monitor; /**< Pointer to generic monitor structure */
|
|
||||||
bool m_checked; /**< Whether server access has been checked */
|
|
||||||
|
|
||||||
MMMonitor(MXS_MONITOR* monitor);
|
MMMonitor(MXS_MONITOR* monitor);
|
||||||
~MMMonitor();
|
~MMMonitor();
|
||||||
|
@ -71,15 +71,9 @@ extern "C" MXS_MODULE* MXS_CREATE_MODULE()
|
|||||||
|
|
||||||
|
|
||||||
NDBCMonitor::NDBCMonitor(MXS_MONITOR *monitor)
|
NDBCMonitor::NDBCMonitor(MXS_MONITOR *monitor)
|
||||||
: m_thread(0)
|
: maxscale::MonitorInstance(monitor)
|
||||||
, m_id(MXS_MONITOR_DEFAULT_ID)
|
, m_id(MXS_MONITOR_DEFAULT_ID)
|
||||||
, m_events(0)
|
|
||||||
, m_shutdown(0)
|
|
||||||
, m_status(0)
|
|
||||||
, m_master(NULL)
|
, m_master(NULL)
|
||||||
, m_script(NULL)
|
|
||||||
, m_monitor(NULL)
|
|
||||||
, m_checked(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* @file ndbcclustermon.hh A NDBC cluster monitor
|
* @file ndbcclustermon.hh A NDBC cluster monitor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class NDBCMonitor : public MXS_MONITOR_INSTANCE
|
class NDBCMonitor : public maxscale::MonitorInstance
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NDBCMonitor(const NDBCMonitor&) = delete;
|
NDBCMonitor(const NDBCMonitor&) = delete;
|
||||||
@ -34,15 +34,8 @@ public:
|
|||||||
json_t* diagnostics_json() const;
|
json_t* diagnostics_json() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
THREAD m_thread; /**< Monitor thread */
|
|
||||||
unsigned long m_id; /**< Monitor ID */
|
unsigned long m_id; /**< Monitor ID */
|
||||||
uint64_t m_events; /**< enabled events */
|
|
||||||
int m_shutdown; /**< Flag to shutdown the monitor thread */
|
|
||||||
int m_status; /**< Monitor status */
|
|
||||||
MXS_MONITORED_SERVER *m_master; /**< Master server for MySQL Master/Slave replication */
|
MXS_MONITORED_SERVER *m_master; /**< Master server for MySQL Master/Slave replication */
|
||||||
char* m_script; /**< Script to call when state changes occur on servers */
|
|
||||||
MXS_MONITOR* m_monitor; /**< Pointer to generic monitor structure */
|
|
||||||
bool m_checked; /**< Whether server access has been checked */
|
|
||||||
|
|
||||||
NDBCMonitor(MXS_MONITOR* monitor);
|
NDBCMonitor(MXS_MONITOR* monitor);
|
||||||
~NDBCMonitor();
|
~NDBCMonitor();
|
||||||
|
Reference in New Issue
Block a user