From 8d67235a75354a2bc8c932d6f67e039d22f5b3e9 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Tue, 7 Jul 2020 23:44:49 +0200 Subject: [PATCH] lib/config: Don't cache device map (fixes #6816) (#6817) --- lib/config/wrapper.go | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/config/wrapper.go b/lib/config/wrapper.go index 37e136121..e95ce33c2 100644 --- a/lib/config/wrapper.go +++ b/lib/config/wrapper.go @@ -95,10 +95,9 @@ type wrapper struct { path string evLogger events.Logger - waiter Waiter // Latest ongoing config change - deviceMap map[protocol.DeviceID]DeviceConfiguration - subs []Committer - mut sync.Mutex + waiter Waiter // Latest ongoing config change + subs []Committer + mut sync.Mutex requiresRestart uint32 // an atomic bool } @@ -195,7 +194,6 @@ func (w *wrapper) replaceLocked(to Configuration) (Waiter, error) { } w.cfg = to - w.deviceMap = nil w.waiter = w.notifyListeners(from.Copy(), to.Copy()) @@ -226,13 +224,11 @@ func (w *wrapper) notifyListener(sub Committer, from, to Configuration) { func (w *wrapper) Devices() map[protocol.DeviceID]DeviceConfiguration { w.mut.Lock() defer w.mut.Unlock() - if w.deviceMap == nil { - w.deviceMap = make(map[protocol.DeviceID]DeviceConfiguration, len(w.cfg.Devices)) - for _, dev := range w.cfg.Devices { - w.deviceMap[dev.DeviceID] = dev.Copy() - } + deviceMap := make(map[protocol.DeviceID]DeviceConfiguration, len(w.cfg.Devices)) + for _, dev := range w.cfg.Devices { + deviceMap[dev.DeviceID] = dev.Copy() } - return w.deviceMap + return deviceMap } // SetDevices adds new devices to the configuration, or overwrites existing