BUG/MEDIUM: log: issue mixing sampled to not sampled log servers.

A boolean was mistakenly declared 'static THREAD_LOCAL' causing
the probe of a log to a 'not sampled' log server conditionned by
the last evaluated 'sampled log' server test on the same thread.

This results to unpredictable drops of logs on 'not sampled'
log servers as soon a 'sampled' log server is declared.

This patch removes the static THREAD_LOCAL attribute from this
boolean, fixing the issue and allowing to mix 'sampled' and
'not sampled' servers.

This fix should be backported in any branches which includes
the log sampling feature.
This commit is contained in:
Emeric Brun 2020-07-10 15:47:11 +02:00 committed by Willy Tarreau
parent dc2ac81c41
commit 2f4cc28e0f

View File

@ -1832,7 +1832,7 @@ void __send_log(struct list *logsrvs, struct buffer *tag, int level,
/* Send log messages to syslog server. */ /* Send log messages to syslog server. */
nblogger = 0; nblogger = 0;
list_for_each_entry(logsrv, logsrvs, list) { list_for_each_entry(logsrv, logsrvs, list) {
static THREAD_LOCAL int in_range = 1; int in_range = 1;
/* we can filter the level of the messages that are sent to each logger */ /* we can filter the level of the messages that are sent to each logger */
if (level > logsrv->level) if (level > logsrv->level)