From 6e52b8660d834930dd6985ae8b77ad7f7ae674fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Pa=C3=9F?= <22845248+mpass99@users.noreply.github.com> Date: Sun, 31 Jul 2022 22:45:53 +0200 Subject: [PATCH] Avoid elements being removed multiple times as this leads to multiple deletion events in the monitoring. --- pkg/storage/storage.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 827f1b8..63380e4 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -95,8 +95,11 @@ func (s *localStorage[T]) Get(id string) (o T, ok bool) { func (s *localStorage[T]) Delete(id string) { s.Lock() defer s.Unlock() - s.sendMonitoringData(id, s.objects[id], true, s.unsafeLength()-1) - delete(s.objects, id) + o, ok := s.objects[id] + if ok { + delete(s.objects, id) + s.sendMonitoringData(id, o, true, s.unsafeLength()) + } } func (s *localStorage[T]) Pop(id string) (T, bool) { @@ -118,8 +121,8 @@ func (s *localStorage[T]) Sample() (o T, ok bool) { s.Lock() defer s.Unlock() for key, object := range s.objects { - s.sendMonitoringData(key, object, true, s.unsafeLength()-1) delete(s.objects, key) + s.sendMonitoringData(key, object, true, s.unsafeLength()) return object, true } return o, false