Rename server_is_running() to server_is_usable()
The previous name was misleading. The new server_is_running() only checks for the running bit so that a server is always either running or down.
This commit is contained in:
parent
89dfc80f86
commit
1e33ab69f2
@ -147,7 +147,7 @@ public:
|
||||
*/
|
||||
inline bool can_connect() const
|
||||
{
|
||||
return !has_failed() && server_is_running(m_backend->server);
|
||||
return !has_failed() && server_is_usable(m_backend->server);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -202,9 +202,9 @@ typedef enum skygw_chk_t
|
||||
(server_is_slave(s) ? "RUNNING SLAVE" : \
|
||||
(server_is_joined(s) ? "RUNNING JOINED" : \
|
||||
(server_is_ndb(s) ? "RUNNING NDB" : \
|
||||
((!server_is_down(s) && server_is_in_maint(s)) ? "RUNNING MAINTENANCE" : \
|
||||
((server_is_running(s) && server_is_in_maint(s)) ? "RUNNING MAINTENANCE" : \
|
||||
(server_is_relay(s) ? "RUNNING RELAY" : \
|
||||
(server_is_running(s) ? "RUNNING (only)" : \
|
||||
(server_is_usable(s) ? "RUNNING (only)" : \
|
||||
(server_is_down(s) ? "DOWN" : "UNKNOWN STATUS"))))))))
|
||||
|
||||
#define STRTARGET(t) (t == TARGET_ALL ? "TARGET_ALL" : \
|
||||
|
@ -205,16 +205,32 @@ inline bool server_is_active(const SERVER* server)
|
||||
return server->is_active;
|
||||
}
|
||||
|
||||
inline bool status_is_running(uint64_t status)
|
||||
inline bool status_is_usable(uint64_t status)
|
||||
{
|
||||
return (status & (SERVER_RUNNING | SERVER_MAINT)) == SERVER_RUNNING;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
inline bool status_is_running(uint64_t status)
|
||||
{
|
||||
return (status & SERVER_RUNNING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the server running?
|
||||
*
|
||||
* @param server The server
|
||||
* @return True, if monitor can connect to server.
|
||||
* @return True, if monitor can connect to the server.
|
||||
*/
|
||||
inline bool server_is_running(const SERVER* server)
|
||||
{
|
||||
|
@ -1715,7 +1715,7 @@ void mon_hangup_failed_servers(MXS_MONITOR *monitor)
|
||||
for (MXS_MONITORED_SERVER *ptr = monitor->monitored_servers; ptr; ptr = ptr->next)
|
||||
{
|
||||
if (mon_status_changed(ptr) &&
|
||||
(!(server_is_running(ptr->server)) ||
|
||||
(!(server_is_usable(ptr->server)) ||
|
||||
!(server_is_in_cluster(ptr->server))))
|
||||
{
|
||||
dcb_hangup_foreach(ptr->server);
|
||||
|
@ -539,7 +539,7 @@ MariaDBServer* MariaDBMonitor::find_topology_master_server(string* msg_out)
|
||||
MariaDBServer* server = *iter;
|
||||
if (server->m_node.parents.empty())
|
||||
{
|
||||
if (server->is_running() && !server->is_read_only())
|
||||
if (server->is_usable() && !server->is_read_only())
|
||||
{
|
||||
master_candidates.push_back(server);
|
||||
}
|
||||
@ -624,7 +624,7 @@ MariaDBServer* MariaDBMonitor::find_master_inside_cycle(ServerArray& cycle_membe
|
||||
{
|
||||
MariaDBServer* server = *iter;
|
||||
ss_dassert(server->m_node.cycle != NodeData::CYCLE_NONE);
|
||||
if (server->is_running() && !server->is_read_only())
|
||||
if (server->is_usable() && !server->is_read_only())
|
||||
{
|
||||
return server;
|
||||
}
|
||||
@ -798,7 +798,7 @@ void MariaDBMonitor::assign_slave_and_relay_master(MariaDBServer* start_node)
|
||||
// The slave only gets the slave flags if it's running.
|
||||
// TODO: If slaves with broken links should be given different flags, add that here.
|
||||
slave->clear_status(MASTER_BITS);
|
||||
if (slave->has_status(SERVER_RUNNING))
|
||||
if (slave->is_running())
|
||||
{
|
||||
slave->set_status(SLAVE_BITS);
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ bool MariaDBMonitor::get_joinable_servers(ServerArray* output)
|
||||
bool MariaDBMonitor::server_is_rejoin_suspect(MariaDBServer* rejoin_cand, json_t** output)
|
||||
{
|
||||
bool is_suspect = false;
|
||||
if (rejoin_cand->is_running() && !rejoin_cand->is_master())
|
||||
if (rejoin_cand->is_usable() && !rejoin_cand->is_master())
|
||||
{
|
||||
// Has no slave connection, yet is not a master.
|
||||
if (rejoin_cand->m_slave_status.empty())
|
||||
@ -1673,7 +1673,7 @@ void MariaDBMonitor::set_low_disk_slaves_maintenance()
|
||||
// Only set pure slave and standalone servers to maintenance.
|
||||
for (MariaDBServer* server : m_servers)
|
||||
{
|
||||
if (server->has_status(SERVER_DISK_SPACE_EXHAUSTED) && server->is_running() &&
|
||||
if (server->has_status(SERVER_DISK_SPACE_EXHAUSTED) && server->is_usable() &&
|
||||
!server->is_master() && !server->is_relay_master())
|
||||
{
|
||||
server->set_status(SERVER_MAINT);
|
||||
|
@ -443,6 +443,11 @@ bool MariaDBServer::is_slave() const
|
||||
return status_is_slave(m_server_base->pending_status);
|
||||
}
|
||||
|
||||
bool MariaDBServer::is_usable() const
|
||||
{
|
||||
return status_is_usable(m_server_base->pending_status);
|
||||
}
|
||||
|
||||
bool MariaDBServer::is_running() const
|
||||
{
|
||||
return status_is_running(m_server_base->pending_status);
|
||||
|
@ -229,35 +229,42 @@ public:
|
||||
bool wait_until_gtid(const GtidList& target, int timeout, json_t** err_out);
|
||||
|
||||
/**
|
||||
* Convenience method for SERVER_IS_MASTER
|
||||
* Check if server is a running master.
|
||||
*
|
||||
* @return True if server is a master
|
||||
*/
|
||||
bool is_master() const;
|
||||
|
||||
/**
|
||||
* Convenience method for SERVER_IS_SLAVE
|
||||
* Check if server is a running slave.
|
||||
*
|
||||
* @return True if server is a slave
|
||||
*/
|
||||
bool is_slave() const;
|
||||
|
||||
/**
|
||||
* Convenience method for SERVER_IS_RUNNING
|
||||
* Check if server is running and not in maintenance.
|
||||
*
|
||||
* @return True if server is usable
|
||||
*/
|
||||
bool is_usable() const;
|
||||
|
||||
/**
|
||||
* Check if server is running.
|
||||
*
|
||||
* @return True if server is running
|
||||
*/
|
||||
bool is_running() const;
|
||||
|
||||
/**
|
||||
* Convenience method for SERVER_IS_DOWN
|
||||
* Check if server is down.
|
||||
*
|
||||
* @return True if server is down
|
||||
*/
|
||||
bool is_down() const;
|
||||
|
||||
/**
|
||||
* Convenience method for SERVER_IN_MAINT
|
||||
* Check if server is in maintenance.
|
||||
*/
|
||||
bool is_in_maintenance() const;
|
||||
|
||||
|
@ -320,7 +320,7 @@ newSession(MXS_ROUTER *instance, MXS_SESSION *session)
|
||||
}
|
||||
|
||||
/* Check server status bits against bitvalue from router_options */
|
||||
if (ref && server_is_running(ref->server) &&
|
||||
if (ref && server_is_usable(ref->server) &&
|
||||
(ref->server->status & client_rses->bitmask & client_rses->bitvalue))
|
||||
{
|
||||
if (master_host)
|
||||
@ -545,7 +545,7 @@ static inline bool connection_is_valid(ROUTER_INSTANCE* inst, ROUTER_CLIENT_SES*
|
||||
// 'router_options=slave' in the configuration file and there was only
|
||||
// the sole master available at session creation time.
|
||||
|
||||
if (server_is_running(router_cli_ses->backend->server) &&
|
||||
if (server_is_usable(router_cli_ses->backend->server) &&
|
||||
(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
|
||||
|
@ -130,7 +130,7 @@ bool connect_backend_servers(SSRBackendList& backends, MXS_SESSION* session)
|
||||
{
|
||||
SERVER_REF* b = (*it)->backend();
|
||||
|
||||
if (server_is_running(b->server))
|
||||
if (server_is_usable(b->server))
|
||||
{
|
||||
servers_found += 1;
|
||||
|
||||
|
@ -209,7 +209,7 @@ SERVER* SchemaRouterSession::resolve_query_target(GWBUF* pPacket,
|
||||
/** We either don't know or don't care where this query should go */
|
||||
target = get_shard_target(pPacket, type);
|
||||
|
||||
if (target && server_is_running(target))
|
||||
if (target && server_is_usable(target))
|
||||
{
|
||||
route_target = TARGET_NAMED_SERVER;
|
||||
}
|
||||
@ -236,7 +236,7 @@ SERVER* SchemaRouterSession::resolve_query_target(GWBUF* pPacket,
|
||||
for (SSRBackendList::iterator it = m_backends.begin(); it != m_backends.end(); it++)
|
||||
{
|
||||
SERVER *server = (*it)->backend()->server;
|
||||
if (server_is_running(server))
|
||||
if (server_is_usable(server))
|
||||
{
|
||||
route_target = TARGET_NAMED_SERVER;
|
||||
target = server;
|
||||
@ -1405,7 +1405,7 @@ void SchemaRouterSession::query_databases()
|
||||
for (SSRBackendList::iterator it = m_backends.begin(); it != m_backends.end(); it++)
|
||||
{
|
||||
if ((*it)->in_use() && !(*it)->is_closed() &
|
||||
server_is_running((*it)->backend()->server))
|
||||
server_is_usable((*it)->backend()->server))
|
||||
{
|
||||
GWBUF* clone = gwbuf_clone(buffer);
|
||||
MXS_ABORT_IF_NULL(clone);
|
||||
@ -1629,7 +1629,7 @@ bool SchemaRouterSession::get_shard_dcb(DCB** p_dcb, char* name)
|
||||
*/
|
||||
if ((*it)->in_use() &&
|
||||
(strncasecmp(name, b->server->name, PATH_MAX) == 0) &&
|
||||
server_is_running(b->server))
|
||||
server_is_usable(b->server))
|
||||
{
|
||||
*p_dcb = (*it)->dcb();
|
||||
succp = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user