MXS-1457: Ignore removed servers when loading users
When users are loaded, removed or deleted servers are ignored.
This commit is contained in:
@ -601,8 +601,16 @@ int gssapi_auth_load_users(SERV_LISTENER *listener)
|
|||||||
|
|
||||||
if (serviceGetUser(listener->service, &user, &pw) && (pw = decrypt_password(pw)))
|
if (serviceGetUser(listener->service, &user, &pw) && (pw = decrypt_password(pw)))
|
||||||
{
|
{
|
||||||
|
bool no_active_servers = true;
|
||||||
|
|
||||||
for (SERVER_REF *servers = listener->service->dbref; servers; servers = servers->next)
|
for (SERVER_REF *servers = listener->service->dbref; servers; servers = servers->next)
|
||||||
{
|
{
|
||||||
|
if (!SERVER_REF_IS_ACTIVE(servers) || !SERVER_IS_ACTIVE(servers->server))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
no_active_servers = false;
|
||||||
MYSQL *mysql = mysql_init(NULL);
|
MYSQL *mysql = mysql_init(NULL);
|
||||||
|
|
||||||
if (mxs_mysql_real_connect(mysql, servers->server, user, pw))
|
if (mxs_mysql_real_connect(mysql, servers->server, user, pw))
|
||||||
@ -645,6 +653,11 @@ int gssapi_auth_load_users(SERV_LISTENER *listener)
|
|||||||
}
|
}
|
||||||
|
|
||||||
MXS_FREE(pw);
|
MXS_FREE(pw);
|
||||||
|
|
||||||
|
if (no_active_servers)
|
||||||
|
{
|
||||||
|
rval = MXS_AUTH_LOADUSERS_OK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
|
@ -855,15 +855,18 @@ static int get_users(SERV_LISTENER *listener, bool skip_local)
|
|||||||
|
|
||||||
SERVER_REF *server = service->dbref;
|
SERVER_REF *server = service->dbref;
|
||||||
int total_users = -1;
|
int total_users = -1;
|
||||||
|
bool no_active_servers = true;
|
||||||
|
|
||||||
for (server = service->dbref; !service->svc_do_shutdown && server; server = server->next)
|
for (server = service->dbref; !service->svc_do_shutdown && server; server = server->next)
|
||||||
{
|
{
|
||||||
if (skip_local && server_is_mxs_service(server->server))
|
if (!SERVER_REF_IS_ACTIVE(server) || !SERVER_IS_ACTIVE(server->server) ||
|
||||||
|
(skip_local && server_is_mxs_service(server->server)))
|
||||||
{
|
{
|
||||||
total_users = 0;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
no_active_servers = false;
|
||||||
|
|
||||||
MYSQL *con = gw_mysql_init();
|
MYSQL *con = gw_mysql_init();
|
||||||
if (con)
|
if (con)
|
||||||
{
|
{
|
||||||
@ -897,7 +900,12 @@ static int get_users(SERV_LISTENER *listener, bool skip_local)
|
|||||||
|
|
||||||
MXS_FREE(dpwd);
|
MXS_FREE(dpwd);
|
||||||
|
|
||||||
if (server == NULL && total_users == -1)
|
if (no_active_servers)
|
||||||
|
{
|
||||||
|
// This service has no servers or all servers are local MaxScale services
|
||||||
|
total_users = 0;
|
||||||
|
}
|
||||||
|
else if (server == NULL && total_users == -1)
|
||||||
{
|
{
|
||||||
MXS_ERROR("Unable to get user data from backend database for service [%s]."
|
MXS_ERROR("Unable to get user data from backend database for service [%s]."
|
||||||
" Failed to connect to any of the backend databases.", service->name);
|
" Failed to connect to any of the backend databases.", service->name);
|
||||||
|
Reference in New Issue
Block a user