From 3f0c7819979c8036a508d3ac2d0bfa4fb3a8bd50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Pa=C3=9F?= <22845248+mpass99@users.noreply.github.com> Date: Fri, 1 Jul 2022 14:22:55 +0200 Subject: [PATCH] Monitor storage object count. --- pkg/storage/storage.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index d12c644..827f1b8 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -82,7 +82,7 @@ func (s *localStorage[T]) Add(id string, o T) { s.Lock() defer s.Unlock() s.objects[id] = o - s.sendMonitoringData(id, o, false) + s.sendMonitoringData(id, o, false, s.unsafeLength()) } func (s *localStorage[T]) Get(id string) (o T, ok bool) { @@ -95,7 +95,7 @@ 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.sendMonitoringData(id, s.objects[id], true, s.unsafeLength()-1) delete(s.objects, id) } @@ -109,7 +109,7 @@ func (s *localStorage[T]) Purge() { s.Lock() defer s.Unlock() for key, object := range s.objects { - s.sendMonitoringData(key, object, true) + s.sendMonitoringData(key, object, true, 0) } s.objects = make(map[string]T) } @@ -118,7 +118,7 @@ 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.sendMonitoringData(key, object, true, s.unsafeLength()-1) delete(s.objects, key) return object, true } @@ -128,15 +128,19 @@ func (s *localStorage[T]) Sample() (o T, ok bool) { func (s *localStorage[T]) Length() uint { s.RLock() defer s.RUnlock() + return s.unsafeLength() +} + +func (s *localStorage[T]) unsafeLength() uint { return uint(len(s.objects)) } -func (s *localStorage[T]) sendMonitoringData(id string, o T, isDeletion bool) { +func (s *localStorage[T]) sendMonitoringData(id string, o T, isDeletion bool, count uint) { if s.measurement != "" { p := influxdb2.NewPointWithMeasurement(s.measurement) p.AddTag("id", id) p.AddTag("isDeletion", strconv.FormatBool(isDeletion)) - p.AddField("count", 1) + p.AddField("count", count) if s.callback != nil { s.callback(p, o, isDeletion)