MXS-2220 Move server status functions inside class
This commit is contained in:
@ -148,7 +148,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline bool can_connect() const
|
inline bool can_connect() const
|
||||||
{
|
{
|
||||||
return !has_failed() && server_is_usable(m_backend->server);
|
return !has_failed() && m_backend->server->is_usable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -266,7 +266,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline bool is_master() const
|
inline bool is_master() const
|
||||||
{
|
{
|
||||||
return server_is_master(m_backend->server);
|
return m_backend->server->is_master();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -276,7 +276,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline bool is_slave() const
|
inline bool is_slave() const
|
||||||
{
|
{
|
||||||
return server_is_slave(m_backend->server);
|
return m_backend->server->is_slave();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -286,7 +286,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline bool is_relay() const
|
inline bool is_relay() const
|
||||||
{
|
{
|
||||||
return server_is_relay(m_backend->server);
|
return m_backend->server->is_relay();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -294,13 +294,118 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Is the server valid and active? TODO: Rename once "is_active" is moved to internal class.
|
* Is the server valid and active? TODO: Rename once "is_active" is moved to internal class.
|
||||||
*
|
*
|
||||||
* @return True, if server has not been removed from the runtime configuration.
|
* @return True if server has not been removed from the runtime configuration.
|
||||||
*/
|
*/
|
||||||
bool server_is_active() const
|
bool server_is_active() const
|
||||||
{
|
{
|
||||||
return is_active;
|
return is_active;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server running and not in maintenance?
|
||||||
|
*
|
||||||
|
* @return True if server can be used.
|
||||||
|
*/
|
||||||
|
bool is_usable() const
|
||||||
|
{
|
||||||
|
return status_is_usable(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server running?
|
||||||
|
*
|
||||||
|
* @return True if monitor can connect to the server.
|
||||||
|
*/
|
||||||
|
bool is_running() const
|
||||||
|
{
|
||||||
|
return status_is_running(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server down?
|
||||||
|
*
|
||||||
|
* @return True if monitor cannot connect to the server.
|
||||||
|
*/
|
||||||
|
bool is_down() const
|
||||||
|
{
|
||||||
|
return status_is_down(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server in maintenance mode?
|
||||||
|
*
|
||||||
|
* @return True if server is in maintenance.
|
||||||
|
*/
|
||||||
|
bool is_in_maint() const
|
||||||
|
{
|
||||||
|
return status_is_in_maint(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server a master?
|
||||||
|
*
|
||||||
|
* @return True if server is running and marked as master.
|
||||||
|
*/
|
||||||
|
bool is_master() const
|
||||||
|
{
|
||||||
|
return status_is_master(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server a slave.
|
||||||
|
*
|
||||||
|
* @return True if server is running and marked as slave.
|
||||||
|
*/
|
||||||
|
bool is_slave() const
|
||||||
|
{
|
||||||
|
return status_is_slave(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server a relay slave?
|
||||||
|
*
|
||||||
|
* @return True, if server is a running relay.
|
||||||
|
*/
|
||||||
|
bool is_relay() const
|
||||||
|
{
|
||||||
|
return status_is_relay(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server joined Galera node?
|
||||||
|
*
|
||||||
|
* @return True, if server is running and joined.
|
||||||
|
*/
|
||||||
|
bool is_joined() const
|
||||||
|
{
|
||||||
|
return status_is_joined(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server a SQL node in MySQL Cluster?
|
||||||
|
*
|
||||||
|
* @return True, if server is running and with NDB status.
|
||||||
|
*/
|
||||||
|
bool is_ndb() const
|
||||||
|
{
|
||||||
|
return status_is_ndb(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_in_cluster() const
|
||||||
|
{
|
||||||
|
return (status & (SERVER_MASTER | SERVER_SLAVE | SERVER_RELAY | SERVER_JOINED | SERVER_NDB)) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_slave_of_ext_master() const
|
||||||
|
{
|
||||||
|
return status_is_slave_of_ext_master(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_low_on_disk_space() const
|
||||||
|
{
|
||||||
|
return status_is_disk_space_exhausted(status);
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SERVER()
|
SERVER()
|
||||||
{
|
{
|
||||||
@ -309,111 +414,6 @@ private:
|
|||||||
static const int DEFAULT_CHARSET = 0x08; /** The latin1 charset */
|
static const int DEFAULT_CHARSET = 0x08; /** The latin1 charset */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server running and not in maintenance?
|
|
||||||
*
|
|
||||||
* @param server The server
|
|
||||||
* @return True, if server can be used.
|
|
||||||
*/
|
|
||||||
inline bool server_is_usable(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_usable(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server running?
|
|
||||||
*
|
|
||||||
* @param server The server
|
|
||||||
* @return True, if monitor can connect to the server.
|
|
||||||
*/
|
|
||||||
inline bool server_is_running(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_running(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server down?
|
|
||||||
*
|
|
||||||
* @param server The server
|
|
||||||
* @return True, if monitor cannot connect to the server.
|
|
||||||
*/
|
|
||||||
inline bool server_is_down(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_down(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server in maintenance mode?
|
|
||||||
*
|
|
||||||
* @param server The server
|
|
||||||
* @return True, if server is in maintenance.
|
|
||||||
*/
|
|
||||||
inline bool server_is_in_maint(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_in_maint(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server a master?
|
|
||||||
*
|
|
||||||
* @param server The server
|
|
||||||
* @return True, if server is running and marked as master.
|
|
||||||
*/
|
|
||||||
inline bool server_is_master(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_master(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server a slave.
|
|
||||||
*
|
|
||||||
* @param server The server
|
|
||||||
* @return True if server is running and marked as slave.
|
|
||||||
*/
|
|
||||||
inline bool server_is_slave(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_slave(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool server_is_relay(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_relay(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server joined Galera node? The server must be running and joined.
|
|
||||||
*/
|
|
||||||
inline bool server_is_joined(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_joined(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the server a SQL node in MySQL Cluster? The server must be running and with NDB status
|
|
||||||
*/
|
|
||||||
inline bool server_is_ndb(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_ndb(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool server_is_in_cluster(const SERVER* server)
|
|
||||||
{
|
|
||||||
return (server->status
|
|
||||||
& (SERVER_MASTER | SERVER_SLAVE | SERVER_RELAY | SERVER_JOINED | SERVER_NDB)) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool server_is_slave_of_ext_master(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_slave_of_ext_master(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool server_is_disk_space_exhausted(const SERVER* server)
|
|
||||||
{
|
|
||||||
return status_is_disk_space_exhausted(server->status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Add a server parameter
|
* @brief Add a server parameter
|
||||||
*
|
*
|
||||||
|
@ -1227,7 +1227,7 @@ bool mon_status_changed(MXS_MONITORED_SERVER* mon_srv)
|
|||||||
*/
|
*/
|
||||||
bool mon_print_fail_status(MXS_MONITORED_SERVER* mon_srv)
|
bool mon_print_fail_status(MXS_MONITORED_SERVER* mon_srv)
|
||||||
{
|
{
|
||||||
return server_is_down(mon_srv->server) && mon_srv->mon_err_count == 0;
|
return mon_srv->server->is_down() && mon_srv->mon_err_count == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MXS_MONITORED_SERVER* find_parent_node(MXS_MONITORED_SERVER* servers,
|
static MXS_MONITORED_SERVER* find_parent_node(MXS_MONITORED_SERVER* servers,
|
||||||
@ -1668,9 +1668,7 @@ void mon_hangup_failed_servers(MXS_MONITOR* monitor)
|
|||||||
{
|
{
|
||||||
for (MXS_MONITORED_SERVER* ptr = monitor->monitored_servers; ptr; ptr = ptr->next)
|
for (MXS_MONITORED_SERVER* ptr = monitor->monitored_servers; ptr; ptr = ptr->next)
|
||||||
{
|
{
|
||||||
if (mon_status_changed(ptr)
|
if (mon_status_changed(ptr) && (!(ptr->server->is_usable()) || !(ptr->server->is_in_cluster())))
|
||||||
&& (!(server_is_usable(ptr->server))
|
|
||||||
|| !(server_is_in_cluster(ptr->server))))
|
|
||||||
{
|
{
|
||||||
dcb_hangup_foreach(ptr->server);
|
dcb_hangup_foreach(ptr->server);
|
||||||
}
|
}
|
||||||
@ -2782,7 +2780,7 @@ void MonitorInstance::flush_server_status()
|
|||||||
{
|
{
|
||||||
for (MXS_MONITORED_SERVER* pMs = m_monitor->monitored_servers; pMs; pMs = pMs->next)
|
for (MXS_MONITORED_SERVER* pMs = m_monitor->monitored_servers; pMs; pMs = pMs->next)
|
||||||
{
|
{
|
||||||
if (!server_is_in_maint(pMs->server))
|
if (!pMs->server->is_in_maint())
|
||||||
{
|
{
|
||||||
pMs->server->status = pMs->pending_status;
|
pMs->server->status = pMs->pending_status;
|
||||||
}
|
}
|
||||||
@ -2803,7 +2801,7 @@ void MonitorInstanceSimple::tick()
|
|||||||
|
|
||||||
for (MXS_MONITORED_SERVER* pMs = m_monitor->monitored_servers; pMs; pMs = pMs->next)
|
for (MXS_MONITORED_SERVER* pMs = m_monitor->monitored_servers; pMs; pMs = pMs->next)
|
||||||
{
|
{
|
||||||
if (!server_is_in_maint(pMs->server))
|
if (!pMs->server->is_in_maint())
|
||||||
{
|
{
|
||||||
pMs->mon_prev_status = pMs->server->status;
|
pMs->mon_prev_status = pMs->server->status;
|
||||||
pMs->pending_status = pMs->server->status;
|
pMs->pending_status = pMs->server->status;
|
||||||
@ -2858,7 +2856,7 @@ void MonitorInstanceSimple::tick()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (server_is_down(pMs->server))
|
if (pMs->server->is_down())
|
||||||
{
|
{
|
||||||
pMs->mon_err_count += 1;
|
pMs->mon_err_count += 1;
|
||||||
}
|
}
|
||||||
|
@ -518,7 +518,7 @@ void Server::print_to_dcb(DCB* dcb) const
|
|||||||
mon_get_event_name((mxs_monitor_event_t)server->last_event));
|
mon_get_event_name((mxs_monitor_event_t)server->last_event));
|
||||||
time_t t = maxscale_started() + MXS_CLOCK_TO_SEC(server->triggered_at);
|
time_t t = maxscale_started() + MXS_CLOCK_TO_SEC(server->triggered_at);
|
||||||
dcb_printf(dcb, "\tTriggered at: %s\n", http_to_date(t).c_str());
|
dcb_printf(dcb, "\tTriggered at: %s\n", http_to_date(t).c_str());
|
||||||
if (server_is_slave(server) || server_is_relay(server))
|
if (server->is_slave() || server->is_relay())
|
||||||
{
|
{
|
||||||
if (server->rlag >= 0)
|
if (server->rlag >= 0)
|
||||||
{
|
{
|
||||||
@ -731,7 +731,7 @@ void server_set_status_nolock(SERVER* server, uint64_t bit)
|
|||||||
server->status |= bit;
|
server->status |= bit;
|
||||||
|
|
||||||
/** clear error logged flag before the next failure */
|
/** clear error logged flag before the next failure */
|
||||||
if (server_is_master(server))
|
if (server->is_master())
|
||||||
{
|
{
|
||||||
server->master_err_is_logged = false;
|
server->master_err_is_logged = false;
|
||||||
}
|
}
|
||||||
|
@ -1222,7 +1222,7 @@ static int get_users(Listener* listener, bool skip_local)
|
|||||||
{
|
{
|
||||||
if (!server_ref_is_active(server) || !server->server->server_is_active()
|
if (!server_ref_is_active(server) || !server->server->server_is_active()
|
||||||
|| (skip_local && server_is_mxs_service(server->server))
|
|| (skip_local && server_is_mxs_service(server->server))
|
||||||
|| !server_is_running(server->server))
|
|| !server->server->is_running())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ MXS_MONITORED_SERVER* GaleraMonitor::get_candidate_master()
|
|||||||
/* set min_id to the lowest value of moitor_servers->server->node_id */
|
/* set min_id to the lowest value of moitor_servers->server->node_id */
|
||||||
while (moitor_servers)
|
while (moitor_servers)
|
||||||
{
|
{
|
||||||
if (!server_is_in_maint(moitor_servers->server)
|
if (!moitor_servers->server->is_in_maint()
|
||||||
&& (moitor_servers->pending_status & SERVER_JOINED))
|
&& (moitor_servers->pending_status & SERVER_JOINED))
|
||||||
{
|
{
|
||||||
if (m_use_priority)
|
if (m_use_priority)
|
||||||
@ -454,7 +454,7 @@ static MXS_MONITORED_SERVER* set_cluster_master(MXS_MONITORED_SERVER* current_ma
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
if ((current_master->pending_status & SERVER_JOINED)
|
if ((current_master->pending_status & SERVER_JOINED)
|
||||||
&& (!server_is_in_maint(current_master->server)))
|
&& (!current_master->server->is_in_maint()))
|
||||||
{
|
{
|
||||||
return current_master;
|
return current_master;
|
||||||
}
|
}
|
||||||
|
@ -1276,8 +1276,8 @@ bool MariaDBMonitor::is_candidate_better(const MariaDBServer* candidate, const M
|
|||||||
// If both have log_slave_updates on ...
|
// If both have log_slave_updates on ...
|
||||||
else if (cand_updates && curr_updates)
|
else if (cand_updates && curr_updates)
|
||||||
{
|
{
|
||||||
bool cand_disk_ok = !server_is_disk_space_exhausted(candidate->m_server_base->server);
|
bool cand_disk_ok = !candidate->m_server_base->server->is_low_on_disk_space();
|
||||||
bool curr_disk_ok = !server_is_disk_space_exhausted(current_best->m_server_base->server);
|
bool curr_disk_ok = !current_best->m_server_base->server->is_low_on_disk_space();
|
||||||
// ... prefer a slave without disk space issues.
|
// ... prefer a slave without disk space issues.
|
||||||
if (cand_disk_ok && !curr_disk_ok)
|
if (cand_disk_ok && !curr_disk_ok)
|
||||||
{
|
{
|
||||||
|
@ -324,7 +324,7 @@ void MMMonitor::post_tick()
|
|||||||
|
|
||||||
for (MXS_MONITORED_SERVER* ptr = m_monitor->monitored_servers; ptr; ptr = ptr->next)
|
for (MXS_MONITORED_SERVER* ptr = m_monitor->monitored_servers; ptr; ptr = ptr->next)
|
||||||
{
|
{
|
||||||
if (!server_is_in_maint(ptr->server))
|
if (!ptr->server->is_in_maint())
|
||||||
{
|
{
|
||||||
/* If "detect_stale_master" option is On, let's use the previus master */
|
/* If "detect_stale_master" option is On, let's use the previus master */
|
||||||
if (m_detectStaleMaster && root_master
|
if (m_detectStaleMaster && root_master
|
||||||
@ -375,7 +375,7 @@ MXS_MONITORED_SERVER* MMMonitor::get_current_master()
|
|||||||
* that means SERVER_IS_RUNNING returns 0
|
* that means SERVER_IS_RUNNING returns 0
|
||||||
* Let's check only for SERVER_IS_DOWN: server is not running
|
* Let's check only for SERVER_IS_DOWN: server is not running
|
||||||
*/
|
*/
|
||||||
if (server_is_down(ptr->server))
|
if (ptr->server->is_down())
|
||||||
{
|
{
|
||||||
ptr = ptr->next;
|
ptr = ptr->next;
|
||||||
continue;
|
continue;
|
||||||
@ -397,7 +397,7 @@ MXS_MONITORED_SERVER* MMMonitor::get_current_master()
|
|||||||
if (m_master != NULL)
|
if (m_master != NULL)
|
||||||
{
|
{
|
||||||
/* If the root master is in MAINT, return NULL */
|
/* If the root master is in MAINT, return NULL */
|
||||||
if (server_is_in_maint(m_master->server))
|
if (m_master->server->is_in_maint())
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ HintRouterSession* HintRouter::newSession(MXS_SESSION* pSession)
|
|||||||
{
|
{
|
||||||
if (server_ref_is_active(pSref))
|
if (server_ref_is_active(pSref))
|
||||||
{
|
{
|
||||||
if (server_is_master(pSref->server))
|
if (pSref->server->is_master())
|
||||||
{
|
{
|
||||||
if (!master_ref)
|
if (!master_ref)
|
||||||
{
|
{
|
||||||
@ -98,7 +98,7 @@ HintRouterSession* HintRouter::newSession(MXS_SESSION* pSession)
|
|||||||
MXS_WARNING("Found multiple master servers when creating session.\n");
|
MXS_WARNING("Found multiple master servers when creating session.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (server_is_slave(pSref->server))
|
else if (pSref->server->is_slave())
|
||||||
{
|
{
|
||||||
slave_refs.push_back(pSref);
|
slave_refs.push_back(pSref);
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ bool HintRouterSession::route_by_hint(GWBUF* pPacket, HINT* hint, bool print_err
|
|||||||
{
|
{
|
||||||
bool master_ok = false;
|
bool master_ok = false;
|
||||||
// The master server should be already known, but may have changed
|
// The master server should be already known, but may have changed
|
||||||
if (m_master.get() && server_is_master(m_master.server()))
|
if (m_master.get() && m_master.server()->is_master())
|
||||||
{
|
{
|
||||||
master_ok = true;
|
master_ok = true;
|
||||||
}
|
}
|
||||||
@ -317,7 +317,7 @@ bool HintRouterSession::route_to_slave(GWBUF* pPacket, bool print_errors)
|
|||||||
for (size_type curr = begin; curr != limit; curr++)
|
for (size_type curr = begin; curr != limit; curr++)
|
||||||
{
|
{
|
||||||
Dcb& candidate = m_slaves.at(curr % size);
|
Dcb& candidate = m_slaves.at(curr % size);
|
||||||
if (server_is_slave(candidate.server()))
|
if (candidate.server()->is_slave())
|
||||||
{
|
{
|
||||||
HR_DEBUG("Writing packet to slave: '%s'.", candidate.server()->name());
|
HR_DEBUG("Writing packet to slave: '%s'.", candidate.server()->name());
|
||||||
success = candidate.write(pPacket);
|
success = candidate.write(pPacket);
|
||||||
@ -392,7 +392,7 @@ void HintRouterSession::update_connections()
|
|||||||
iter != m_backends.end(); iter++)
|
iter != m_backends.end(); iter++)
|
||||||
{
|
{
|
||||||
SERVER* server = iter->second.get()->server;
|
SERVER* server = iter->second.get()->server;
|
||||||
if (server_is_master(server))
|
if (server->is_master())
|
||||||
{
|
{
|
||||||
if (!m_master.get())
|
if (!m_master.get())
|
||||||
{
|
{
|
||||||
@ -403,7 +403,7 @@ void HintRouterSession::update_connections()
|
|||||||
MXS_WARNING("Found multiple master servers when updating connections.");
|
MXS_WARNING("Found multiple master servers when updating connections.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (server_is_slave(server))
|
else if (server->is_slave())
|
||||||
{
|
{
|
||||||
m_slaves.push_back(iter->second);
|
m_slaves.push_back(iter->second);
|
||||||
}
|
}
|
||||||
|
@ -315,13 +315,13 @@ static MXS_ROUTER_SESSION* newSession(MXS_ROUTER* instance, MXS_SESSION* session
|
|||||||
*/
|
*/
|
||||||
for (SERVER_REF* ref = inst->service->dbref; ref; ref = ref->next)
|
for (SERVER_REF* ref = inst->service->dbref; ref; ref = ref->next)
|
||||||
{
|
{
|
||||||
if (!server_ref_is_active(ref) || server_is_in_maint(ref->server))
|
if (!server_ref_is_active(ref) || ref->server->is_in_maint())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check server status bits against bitvalue from router_options */
|
/* Check server status bits against bitvalue from router_options */
|
||||||
if (ref && server_is_usable(ref->server)
|
if (ref && ref->server->is_usable()
|
||||||
&& (ref->server->status & client_rses->bitmask & client_rses->bitvalue))
|
&& (ref->server->status & client_rses->bitmask & client_rses->bitvalue))
|
||||||
{
|
{
|
||||||
if (master_host)
|
if (master_host)
|
||||||
@ -481,11 +481,11 @@ static void log_closed_session(mxs_mysql_cmd_t mysql_command, SERVER_REF* ref)
|
|||||||
{
|
{
|
||||||
char msg[SERVER::MAX_ADDRESS_LEN + 200] = ""; // Extra space for message
|
char msg[SERVER::MAX_ADDRESS_LEN + 200] = ""; // Extra space for message
|
||||||
|
|
||||||
if (server_is_down(ref->server))
|
if (ref->server->is_down())
|
||||||
{
|
{
|
||||||
sprintf(msg, "Server '%s' is down.", ref->server->name());
|
sprintf(msg, "Server '%s' is down.", ref->server->name());
|
||||||
}
|
}
|
||||||
else if (server_is_in_maint(ref->server))
|
else if (ref->server->is_in_maint())
|
||||||
{
|
{
|
||||||
sprintf(msg, "Server '%s' is in maintenance.", ref->server->name());
|
sprintf(msg, "Server '%s' is in maintenance.", ref->server->name());
|
||||||
}
|
}
|
||||||
@ -513,7 +513,7 @@ static inline bool connection_is_valid(ROUTER_INSTANCE* inst, ROUTER_CLIENT_SES*
|
|||||||
// 'router_options=slave' in the configuration file and there was only
|
// 'router_options=slave' in the configuration file and there was only
|
||||||
// the sole master available at session creation time.
|
// the sole master available at session creation time.
|
||||||
|
|
||||||
if (server_is_usable(router_cli_ses->backend->server)
|
if (router_cli_ses->backend->server->is_usable()
|
||||||
&& (router_cli_ses->backend->server->status & router_cli_ses->bitmask & router_cli_ses->bitvalue))
|
&& (router_cli_ses->backend->server->status & router_cli_ses->bitmask & router_cli_ses->bitvalue))
|
||||||
{
|
{
|
||||||
// Note the use of '==' and not '|'. We must use the former to exclude a
|
// Note the use of '==' and not '|'. We must use the former to exclude a
|
||||||
@ -737,7 +737,7 @@ static SERVER_REF* get_root_master(SERVER_REF* servers)
|
|||||||
SERVER_REF* master_host = NULL;
|
SERVER_REF* master_host = NULL;
|
||||||
for (SERVER_REF* ref = servers; ref; ref = ref->next)
|
for (SERVER_REF* ref = servers; ref; ref = ref->next)
|
||||||
{
|
{
|
||||||
if (ref->active && server_is_master(ref->server))
|
if (ref->active && ref->server->is_master())
|
||||||
{
|
{
|
||||||
// No master found yet or this one has better weight.
|
// No master found yet or this one has better weight.
|
||||||
if (master_host == NULL || ref->server_weight > master_host->server_weight)
|
if (master_host == NULL || ref->server_weight > master_host->server_weight)
|
||||||
|
@ -118,10 +118,6 @@ static const MXS_ENUM_VALUE master_failure_mode_values[] =
|
|||||||
#define CONFIG_MAX_SLAVE_RLAG -1 /**< not used */
|
#define CONFIG_MAX_SLAVE_RLAG -1 /**< not used */
|
||||||
#define CONFIG_SQL_VARIABLES_IN TYPE_ALL
|
#define CONFIG_SQL_VARIABLES_IN TYPE_ALL
|
||||||
|
|
||||||
#define BACKEND_TYPE(b) \
|
|
||||||
(server_is_master((b)->backend_server) ? BE_MASTER \
|
|
||||||
: (server_is_slave((b)->backend_server) ? BE_SLAVE : BE_UNDEFINED));
|
|
||||||
|
|
||||||
#define MARIADB_WAIT_GTID_FUNC "MASTER_GTID_WAIT"
|
#define MARIADB_WAIT_GTID_FUNC "MASTER_GTID_WAIT"
|
||||||
#define MYSQL_WAIT_GTID_FUNC "WAIT_FOR_EXECUTED_GTID_SET"
|
#define MYSQL_WAIT_GTID_FUNC "WAIT_FOR_EXECUTED_GTID_SET"
|
||||||
static const char gtid_wait_stmt[] =
|
static const char gtid_wait_stmt[] =
|
||||||
|
@ -127,7 +127,7 @@ bool connect_backend_servers(SSRBackendList& backends, MXS_SESSION* session)
|
|||||||
{
|
{
|
||||||
SERVER_REF* b = (*it)->backend();
|
SERVER_REF* b = (*it)->backend();
|
||||||
|
|
||||||
if (server_is_usable(b->server))
|
if (b->server->is_usable())
|
||||||
{
|
{
|
||||||
servers_found += 1;
|
servers_found += 1;
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ SERVER* SchemaRouterSession::resolve_query_target(GWBUF* pPacket,
|
|||||||
/** We either don't know or don't care where this query should go */
|
/** We either don't know or don't care where this query should go */
|
||||||
target = get_shard_target(pPacket, type);
|
target = get_shard_target(pPacket, type);
|
||||||
|
|
||||||
if (target && server_is_usable(target))
|
if (target && target->is_usable())
|
||||||
{
|
{
|
||||||
route_target = TARGET_NAMED_SERVER;
|
route_target = TARGET_NAMED_SERVER;
|
||||||
}
|
}
|
||||||
@ -241,7 +241,7 @@ SERVER* SchemaRouterSession::resolve_query_target(GWBUF* pPacket,
|
|||||||
for (SSRBackendList::iterator it = m_backends.begin(); it != m_backends.end(); it++)
|
for (SSRBackendList::iterator it = m_backends.begin(); it != m_backends.end(); it++)
|
||||||
{
|
{
|
||||||
SERVER* server = (*it)->backend()->server;
|
SERVER* server = (*it)->backend()->server;
|
||||||
if (server_is_usable(server))
|
if (server->is_usable())
|
||||||
{
|
{
|
||||||
route_target = TARGET_NAMED_SERVER;
|
route_target = TARGET_NAMED_SERVER;
|
||||||
target = server;
|
target = server;
|
||||||
@ -762,7 +762,7 @@ bool SchemaRouterSession::route_session_write(GWBUF* querybuf, uint8_t command)
|
|||||||
if (mxs_log_is_priority_enabled(LOG_INFO))
|
if (mxs_log_is_priority_enabled(LOG_INFO))
|
||||||
{
|
{
|
||||||
MXS_INFO("Route query to %s\t%s:%d",
|
MXS_INFO("Route query to %s\t%s:%d",
|
||||||
server_is_master((*it)->backend()->server) ? "master" : "slave",
|
(*it)->backend()->server->is_master() ? "master" : "slave",
|
||||||
(*it)->backend()->server->address,
|
(*it)->backend()->server->address,
|
||||||
(*it)->backend()->server->port);
|
(*it)->backend()->server->port);
|
||||||
}
|
}
|
||||||
@ -1393,7 +1393,7 @@ void SchemaRouterSession::query_databases()
|
|||||||
|
|
||||||
for (SSRBackendList::iterator it = m_backends.begin(); it != m_backends.end(); it++)
|
for (SSRBackendList::iterator it = m_backends.begin(); it != m_backends.end(); it++)
|
||||||
{
|
{
|
||||||
if ((*it)->in_use() && !(*it)->is_closed() && server_is_usable((*it)->backend()->server))
|
if ((*it)->in_use() && !(*it)->is_closed() && (*it)->backend()->server->is_usable())
|
||||||
{
|
{
|
||||||
GWBUF* clone = gwbuf_clone(buffer);
|
GWBUF* clone = gwbuf_clone(buffer);
|
||||||
MXS_ABORT_IF_NULL(clone);
|
MXS_ABORT_IF_NULL(clone);
|
||||||
@ -1496,7 +1496,7 @@ bool SchemaRouterSession::get_shard_dcb(DCB** p_dcb, const char* name)
|
|||||||
*/
|
*/
|
||||||
if ((*it)->in_use()
|
if ((*it)->in_use()
|
||||||
&& (strncasecmp(name, b->server->name(), PATH_MAX) == 0)
|
&& (strncasecmp(name, b->server->name(), PATH_MAX) == 0)
|
||||||
&& server_is_usable(b->server))
|
&& b->server->is_usable())
|
||||||
{
|
{
|
||||||
*p_dcb = (*it)->dcb();
|
*p_dcb = (*it)->dcb();
|
||||||
succp = true;
|
succp = true;
|
||||||
|
Reference in New Issue
Block a user