Completion to fix for http://bugs.skysql.com/show_bug.cgi?id=547
server.h:added macro SERVER_IS_ROOT_MASTER for finding valid candidate for root master readwritesplit.c: wrote open three if conditions in get_root_master_bref for clarity
This commit is contained in:
@ -123,6 +123,14 @@ typedef struct server {
|
|||||||
*/
|
*/
|
||||||
#define SERVER_IS_MASTER(server) \
|
#define SERVER_IS_MASTER(server) \
|
||||||
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_MASTER))
|
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_SLAVE|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_MASTER))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the server valid candidate for root master. The server must be running,
|
||||||
|
* marked as master and not have maintenance bit set.
|
||||||
|
*/
|
||||||
|
#define SERVER_IS_ROOT_MASTER(server) \
|
||||||
|
(((server)->status & (SERVER_RUNNING|SERVER_MASTER|SERVER_MAINT)) == (SERVER_RUNNING|SERVER_MASTER))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the server a slave? The server must be both running and marked as a slave
|
* Is the server a slave? The server must be both running and marked as a slave
|
||||||
* in order for the macro to return true
|
* in order for the macro to return true
|
||||||
|
@ -4382,7 +4382,10 @@ static backend_ref_t* get_root_master_bref(
|
|||||||
|
|
||||||
while (i<rses->rses_nbackends)
|
while (i<rses->rses_nbackends)
|
||||||
{
|
{
|
||||||
if (SERVER_IS_MASTER(bref->bref_backend->backend_server))
|
if ((bref->bref_backend->backend_server->status &
|
||||||
|
(SERVER_MASTER|SERVER_MAINT)) == SERVER_MASTER)
|
||||||
|
{
|
||||||
|
if (bref->bref_backend->backend_server->status & SERVER_MASTER)
|
||||||
{
|
{
|
||||||
if (candidate_bref == NULL ||
|
if (candidate_bref == NULL ||
|
||||||
(bref->bref_backend->backend_server->depth <
|
(bref->bref_backend->backend_server->depth <
|
||||||
@ -4391,6 +4394,7 @@ static backend_ref_t* get_root_master_bref(
|
|||||||
candidate_bref = bref;
|
candidate_bref = bref;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
bref++;
|
bref++;
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user