diff --git a/internal/watcher/config_file_watcher.go b/internal/watcher/config_file_watcher.go index 86cb9c8d..75a9522d 100644 --- a/internal/watcher/config_file_watcher.go +++ b/internal/watcher/config_file_watcher.go @@ -8,18 +8,17 @@ import ( ) var ( - configDirWatcher *DirWatcher - configDirWatcherMu sync.Mutex + configDirWatcher *DirWatcher + configDirWatcherInitOnce sync.Once ) +func initConfigDirWatcher() { + t := task.RootTask("config_dir_watcher", false) + configDirWatcher = NewDirectoryWatcher(t, common.ConfigBasePath) +} + // create a new file watcher for file under ConfigBasePath. func NewConfigFileWatcher(filename string) Watcher { - configDirWatcherMu.Lock() - defer configDirWatcherMu.Unlock() - - if configDirWatcher == nil { - t := task.RootTask("config_dir_watcher", false) - configDirWatcher = NewDirectoryWatcher(t, common.ConfigBasePath) - } + configDirWatcherInitOnce.Do(initConfigDirWatcher) return configDirWatcher.Add(filename) }