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:
MassimilianoPinto
2014-11-13 17:41:50 +01:00
parent 12b06a503e
commit 238c476d3a

View File

@ -468,6 +468,24 @@ getUsers(SERVICE *service, USERS *users)
server = service->databases;
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,
server->name,
service_user,
@ -479,6 +497,18 @@ getUsers(SERVICE *service, USERS *users)
{
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);
if (server == NULL)
@ -663,8 +693,8 @@ getUsers(SERVICE *service, USERS *users)
/* load all mysql database names */
dbnames = getDatabases(service, con);
LOGIF(LM, (skygw_log_write(
LOGFILE_MESSAGE,
LOGIF(LD, (skygw_log_write(
LOGFILE_DEBUG,
"Loaded %d MySQL Database Names for service [%s]",
dbnames,
service->name)));