getUsers try selecting a Master server
getUsers try selecting a Master server if available. Next users reload will connect to master server
This commit is contained in:
@ -468,6 +468,24 @@ getUsers(SERVICE *service, USERS *users)
|
|||||||
server = service->databases;
|
server = service->databases;
|
||||||
dpwd = decryptPassword(service_passwd);
|
dpwd = decryptPassword(service_passwd);
|
||||||
|
|
||||||
|
/* Select a server with Master bit, if available */
|
||||||
|
while (server != NULL && !(server->status & SERVER_MASTER)) {
|
||||||
|
server = server->nextdb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try loading data from master server */
|
||||||
|
if (server != NULL && (mysql_real_connect(con, server->name, service_user, dpwd, NULL, server->port, NULL, 0) != NULL)) {
|
||||||
|
LOGIF(LD, (skygw_log_write_flush(
|
||||||
|
LOGFILE_DEBUG,
|
||||||
|
"Dbusers : Loading data from backend database with Master role [%s:%i] "
|
||||||
|
"for service [%s]",
|
||||||
|
server->name,
|
||||||
|
server->port,
|
||||||
|
service->name)));
|
||||||
|
} else {
|
||||||
|
/* load data from other servers via loop */
|
||||||
|
server = service->databases;
|
||||||
|
|
||||||
while (server != NULL && (mysql_real_connect(con,
|
while (server != NULL && (mysql_real_connect(con,
|
||||||
server->name,
|
server->name,
|
||||||
service_user,
|
service_user,
|
||||||
@ -479,6 +497,18 @@ getUsers(SERVICE *service, USERS *users)
|
|||||||
{
|
{
|
||||||
server = server->nextdb;
|
server = server->nextdb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (server != NULL) {
|
||||||
|
LOGIF(LD, (skygw_log_write_flush(
|
||||||
|
LOGFILE_DEBUG,
|
||||||
|
"Dbusers : Loading data from backend database [%s:%i] "
|
||||||
|
"for service [%s]",
|
||||||
|
server->name,
|
||||||
|
server->port,
|
||||||
|
service->name)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
free(dpwd);
|
free(dpwd);
|
||||||
|
|
||||||
if (server == NULL)
|
if (server == NULL)
|
||||||
@ -663,8 +693,8 @@ getUsers(SERVICE *service, USERS *users)
|
|||||||
/* load all mysql database names */
|
/* load all mysql database names */
|
||||||
dbnames = getDatabases(service, con);
|
dbnames = getDatabases(service, con);
|
||||||
|
|
||||||
LOGIF(LM, (skygw_log_write(
|
LOGIF(LD, (skygw_log_write(
|
||||||
LOGFILE_MESSAGE,
|
LOGFILE_DEBUG,
|
||||||
"Loaded %d MySQL Database Names for service [%s]",
|
"Loaded %d MySQL Database Names for service [%s]",
|
||||||
dbnames,
|
dbnames,
|
||||||
service->name)));
|
service->name)));
|
||||||
|
|||||||
Reference in New Issue
Block a user