From 630629a3fd8ecd483f8cf475376a9f726d61ea16 Mon Sep 17 00:00:00 2001 From: yusing Date: Thu, 22 Jan 2026 15:27:01 +0800 Subject: [PATCH] refactor(watcher): simplify config file watcher initialization using sync.Once --- internal/watcher/config_file_watcher.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) 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) }