From bff27c9fbca960ee0b19e6222d05baf777128f0e Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 18 Aug 2024 19:18:10 +0200 Subject: [PATCH] chore: fix potential deadlock --- util/config/handler.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/util/config/handler.go b/util/config/handler.go index 532b451d2..5737f5cca 100644 --- a/util/config/handler.go +++ b/util/config/handler.go @@ -56,16 +56,18 @@ func (cp *handler[T]) Add(dev Device[T]) error { // Delete deletes device func (cp *handler[T]) Delete(name string) error { - cp.mu.RLock() - defer cp.mu.RUnlock() + cp.mu.Lock() for i, dev := range cp.devices { if name == dev.Config().Name { cp.devices = append(cp.devices[:i], cp.devices[i+1:]...) + cp.mu.Unlock() + bus.Publish(cp.topic, OpDelete, dev) return nil } } + cp.mu.Unlock() return fmt.Errorf("not found: %s", name) }