MXS-1661 Turn error into warning and suppress logging

The error regarding the refresh rate having been exceeded

    error: [RWSplit] Refresh rate limit exceeded ...

has been turned into a warning. Further, the warning will be
logged at most once per refresh period that currently is 30s.
This commit is contained in:
Johan Wikman 2018-02-09 10:07:59 +02:00
parent 816983691a
commit b23ad6d2ef
2 changed files with 10 additions and 3 deletions

View File

@ -71,8 +71,9 @@ typedef struct
*/
typedef struct
{
int nloads;
time_t last;
int nloads; /*<< How many times have they been loaded. */
time_t last; /*<< When was the users loaded the last time. */
bool warned; /**< Has it been warned that the limit has been exceeded. */
} SERVICE_REFRESH_RATE;
typedef struct server_ref_t

View File

@ -341,6 +341,7 @@ serviceStartPort(SERVICE *service, SERV_LISTENER *port)
*/
service->rate_limit.last = time(NULL) - USERS_REFRESH_TIME;
service->rate_limit.nloads = 1;
service->rate_limit.warned = false;
if (port->listener->func.listen(port->listener, config_bind))
{
@ -1617,7 +1618,11 @@ int service_refresh_users(SERVICE *service)
if ((now < service->rate_limit.last + USERS_REFRESH_TIME) ||
(service->rate_limit.nloads > USERS_REFRESH_MAX_PER_TIME))
{
MXS_ERROR("[%s] Refresh rate limit exceeded for load of users' table.", service->name);
if (!service->rate_limit.warned)
{
MXS_WARNING("[%s] Refresh rate limit exceeded for load of users' table.", service->name);
service->rate_limit.warned = true;
}
}
else
{
@ -1628,6 +1633,7 @@ int service_refresh_users(SERVICE *service)
{
service->rate_limit.nloads = 1;
service->rate_limit.last = now;
service->rate_limit.warned = false;
}
ret = 0;