From bc70f2bf123d94fc3226754ec9f1f44748e98162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 10 Oct 2019 14:14:55 +0200 Subject: helpers: Fix data race in global logger init Fixes #6409 --- helpers/general.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'helpers') diff --git a/helpers/general.go b/helpers/general.go index 5eabda3c6..80c0591b2 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -283,6 +283,13 @@ type DistinctLogger struct { m map[string]bool } +func (l *DistinctLogger) Reset() { + l.Lock() + defer l.Unlock() + + l.m = make(map[string]bool) +} + // Println will log the string returned from fmt.Sprintln given the arguments, // but not if it has been logged before. func (l *DistinctLogger) Println(v ...interface{}) { @@ -347,11 +354,11 @@ var ( DistinctFeedbackLog = NewDistinctFeedbackLogger() ) -// InitLoggers sets up the global distinct loggers. +// InitLoggers resets the global distinct loggers. func InitLoggers() { - DistinctErrorLog = NewDistinctErrorLogger() - DistinctWarnLog = NewDistinctWarnLogger() - DistinctFeedbackLog = NewDistinctFeedbackLogger() + DistinctErrorLog.Reset() + DistinctWarnLog.Reset() + DistinctFeedbackLog.Reset() } // Deprecated informs about a deprecation, but only once for a given set of arguments' values. -- cgit v1.2.3