Added depth and SERVER_SLAVE_OF_EXTERNAL_MASTER for build_mysql51_replication_tree
Now build_mysql51_replication_tree assigns depth and handles SERVER_SLAVE_OF_EXTERNAL_MASTER status
This commit is contained in:

committed by
Johan Wikman

parent
57700215ac
commit
656cb3c517
@ -507,6 +507,8 @@ static MXS_MONITOR_SERVERS *build_mysql51_replication_tree(MXS_MONITOR *mon)
|
|||||||
MXS_MONITOR_SERVERS* database = mon->databases;
|
MXS_MONITOR_SERVERS* database = mon->databases;
|
||||||
MXS_MONITOR_SERVERS *ptr, *rval = NULL;
|
MXS_MONITOR_SERVERS *ptr, *rval = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
MYSQL_MONITOR *handle = mon->handle;
|
||||||
|
|
||||||
while (database)
|
while (database)
|
||||||
{
|
{
|
||||||
bool ismaster = false;
|
bool ismaster = false;
|
||||||
@ -547,14 +549,16 @@ static MXS_MONITOR_SERVERS *build_mysql51_replication_tree(MXS_MONITOR *mon)
|
|||||||
/* Set the Slave Role */
|
/* Set the Slave Role */
|
||||||
if (ismaster)
|
if (ismaster)
|
||||||
{
|
{
|
||||||
MYSQL_MONITOR *handle = mon->handle;
|
|
||||||
handle->master = database;
|
handle->master = database;
|
||||||
|
|
||||||
MXS_DEBUG("Master server found at [%s]:%d with %d slaves",
|
MXS_DEBUG("Master server found at [%s]:%d with %d slaves",
|
||||||
database->server->name,
|
database->server->name,
|
||||||
database->server->port,
|
database->server->port,
|
||||||
nslaves);
|
nslaves);
|
||||||
|
|
||||||
monitor_set_pending_status(database, SERVER_MASTER);
|
monitor_set_pending_status(database, SERVER_MASTER);
|
||||||
|
database->server->depth = 0; // Add Depth 0 for Master
|
||||||
|
|
||||||
if (rval == NULL || rval->server->node_id > database->server->node_id)
|
if (rval == NULL || rval->server->node_id > database->server->node_id)
|
||||||
{
|
{
|
||||||
rval = database;
|
rval = database;
|
||||||
@ -578,13 +582,17 @@ static MXS_MONITOR_SERVERS *build_mysql51_replication_tree(MXS_MONITOR *mon)
|
|||||||
if (ptr->server->slaves[i] == database->server->node_id)
|
if (ptr->server->slaves[i] == database->server->node_id)
|
||||||
{
|
{
|
||||||
database->server->master_id = ptr->server->node_id;
|
database->server->master_id = ptr->server->node_id;
|
||||||
|
database->server->depth = 1; // Add Depth 1 for Slave
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ptr = ptr->next;
|
ptr = ptr->next;
|
||||||
}
|
}
|
||||||
if (database->server->master_id <= 0 && SERVER_IS_SLAVE(database->server))
|
if (SERVER_IS_SLAVE(database->server) &&
|
||||||
|
(database->server->master_id <= 0 ||
|
||||||
|
database->server->master_id != handle->master->server->node_id))
|
||||||
{
|
{
|
||||||
|
monitor_clear_pending_status(database, SERVER_SLAVE);
|
||||||
monitor_set_pending_status(database, SERVER_SLAVE_OF_EXTERNAL_MASTER);
|
monitor_set_pending_status(database, SERVER_SLAVE_OF_EXTERNAL_MASTER);
|
||||||
}
|
}
|
||||||
database = database->next;
|
database = database->next;
|
||||||
|
Reference in New Issue
Block a user