Add server state helper functions
Added helper functions that check various server states. This makes the readwritesplit code easier to read as the function names convey the intention better than the macro invokations.
This commit is contained in:
parent
37b6cf250d
commit
d7543988ee
@ -219,6 +219,27 @@ public:
|
||||
*/
|
||||
bool is_closed() const;
|
||||
|
||||
/**
|
||||
* @brief Check if the server is a master
|
||||
*
|
||||
* @return True if server is a master
|
||||
*/
|
||||
bool is_master() const;
|
||||
|
||||
/**
|
||||
* @brief Check if the server is a slave
|
||||
*
|
||||
* @return True if the server is a slave
|
||||
*/
|
||||
bool is_slave() const;
|
||||
|
||||
/**
|
||||
* @brief Check if the server is a relay server
|
||||
*
|
||||
* @return True if the server is a relay server
|
||||
*/
|
||||
bool is_relay() const;
|
||||
|
||||
/**
|
||||
* @brief Check if the backend has failed fatally
|
||||
*
|
||||
|
@ -279,6 +279,21 @@ bool Backend::is_closed() const
|
||||
return m_closed;
|
||||
}
|
||||
|
||||
bool Backend::is_master() const
|
||||
{
|
||||
return SERVER_IS_MASTER(m_backend->server);
|
||||
}
|
||||
|
||||
bool Backend::is_slave() const
|
||||
{
|
||||
return SERVER_IS_SLAVE(m_backend->server);
|
||||
}
|
||||
|
||||
bool Backend::is_relay() const
|
||||
{
|
||||
return SERVER_IS_RELAY_SERVER(m_backend->server);
|
||||
}
|
||||
|
||||
bool Backend::has_failed() const
|
||||
{
|
||||
return m_state & FATAL_FAILURE;
|
||||
|
@ -354,8 +354,8 @@ static bool reroute_stored_statement(ROUTER_CLIENT_SES *rses, const SRWBackend&
|
||||
SRWBackend& backend = *it;
|
||||
|
||||
if (backend->in_use() && backend != old &&
|
||||
!SERVER_IS_MASTER(backend->server()) &&
|
||||
SERVER_IS_SLAVE(backend->server()))
|
||||
!backend->is_master() &&
|
||||
backend->is_slave())
|
||||
{
|
||||
/** Found a valid candidate; a non-master slave that's in use */
|
||||
if (backend->write(stored))
|
||||
|
@ -269,7 +269,7 @@ bool route_session_write(ROUTER_CLIENT_SES *rses, GWBUF *querybuf, uint8_t comma
|
||||
}
|
||||
|
||||
MXS_INFO("Route query to %s \t[%s]:%d",
|
||||
SERVER_IS_MASTER(backend->server()) ? "master" : "slave",
|
||||
backend->is_master() ? "master" : "slave",
|
||||
backend->server()->name, backend->server()->port);
|
||||
}
|
||||
else
|
||||
@ -355,9 +355,9 @@ SRWBackend get_target_backend(ROUTER_CLIENT_SES *rses, backend_type_t btype,
|
||||
|
||||
if (backend->in_use() && backend->is_active() &&
|
||||
(strcasecmp(name, backend->server()->unique_name) == 0) &&
|
||||
(SERVER_IS_SLAVE(backend->server()) ||
|
||||
SERVER_IS_RELAY_SERVER(backend->server()) ||
|
||||
SERVER_IS_MASTER(backend->server())))
|
||||
(backend->is_slave() ||
|
||||
backend->is_relay() ||
|
||||
backend->is_master()))
|
||||
{
|
||||
return backend;
|
||||
}
|
||||
@ -381,7 +381,7 @@ SRWBackend get_target_backend(ROUTER_CLIENT_SES *rses, backend_type_t btype,
|
||||
* slave can't be used
|
||||
*/
|
||||
if (!backend->in_use() || !backend->is_active() ||
|
||||
(!SERVER_IS_MASTER(backend->server()) && !SERVER_IS_SLAVE(backend->server())))
|
||||
(!backend->is_master() && !backend->is_slave()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -395,7 +395,7 @@ SRWBackend get_target_backend(ROUTER_CLIENT_SES *rses, backend_type_t btype,
|
||||
* Ensure that master has not changed during
|
||||
* session and abort if it has.
|
||||
*/
|
||||
if (SERVER_IS_MASTER(backend->server()) && backend == rses->current_master)
|
||||
if (backend->is_master() && backend == rses->current_master)
|
||||
{
|
||||
/** found master */
|
||||
rval = backend;
|
||||
@ -417,8 +417,7 @@ SRWBackend get_target_backend(ROUTER_CLIENT_SES *rses, backend_type_t btype,
|
||||
* If candidate is master, any slave which doesn't break
|
||||
* replication lag limits replaces it.
|
||||
*/
|
||||
else if (SERVER_IS_MASTER(rval->server()) &&
|
||||
SERVER_IS_SLAVE(backend->server()) &&
|
||||
else if (rval->is_master() && backend->is_slave() &&
|
||||
(max_rlag == MAX_RLAG_UNDEFINED ||
|
||||
(backend->server()->rlag != MAX_RLAG_NOT_AVAILABLE &&
|
||||
backend->server()->rlag <= max_rlag)) &&
|
||||
@ -432,9 +431,9 @@ SRWBackend get_target_backend(ROUTER_CLIENT_SES *rses, backend_type_t btype,
|
||||
* backend and update assign it to new candidate if
|
||||
* necessary.
|
||||
*/
|
||||
else if (SERVER_IS_SLAVE(backend->server()) ||
|
||||
else if (backend->is_slave() ||
|
||||
(rses->rses_config.master_accept_reads &&
|
||||
SERVER_IS_MASTER(backend->server())))
|
||||
backend->is_master()))
|
||||
{
|
||||
if (max_rlag == MAX_RLAG_UNDEFINED ||
|
||||
(backend->server()->rlag != MAX_RLAG_NOT_AVAILABLE &&
|
||||
@ -1029,7 +1028,7 @@ handle_got_target(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses,
|
||||
}
|
||||
|
||||
MXS_INFO("Route query to %s \t[%s]:%d <",
|
||||
(SERVER_IS_MASTER(target->server()) ? "master" : "slave"),
|
||||
(target->is_master() ? "master" : "slave"),
|
||||
target->server()->name, target->server()->port);
|
||||
|
||||
/** The session command cursor must not be active */
|
||||
@ -1131,7 +1130,7 @@ static SRWBackend get_root_master_backend(ROUTER_CLIENT_SES *rses)
|
||||
master.status = backend->server()->status;
|
||||
}
|
||||
|
||||
if (SERVER_IS_MASTER(backend->server()))
|
||||
if (backend->is_master())
|
||||
{
|
||||
if (!candidate ||
|
||||
(backend->server()->depth < candidate->server()->depth))
|
||||
|
Loading…
x
Reference in New Issue
Block a user