From be3b022f61d66b1939432021f4aa8f1b2f62aff3 Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 18 Oct 2018 19:29:09 +0200 Subject: [PATCH] StatS - index SQItems for ExpiryTime/QueueLength to happen --- engine/libstats.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/engine/libstats.go b/engine/libstats.go index fca90a9f6..2dbbbfa5b 100644 --- a/engine/libstats.go +++ b/engine/libstats.go @@ -156,7 +156,7 @@ func (sq *StatQueue) remExpired() { var expIdx *int // index of last item to be expired for i, item := range sq.SQItems { if item.ExpiryTime == nil { - break + break // items are ordered, so no need to look further } if item.ExpiryTime.After(time.Now()) { break @@ -184,6 +184,16 @@ func (sq *StatQueue) remOnQueueLength() { // addStatEvent computes metrics for an event func (sq *StatQueue) addStatEvent(ev *utils.CGREvent) { + var expTime *time.Time + if sq.ttl != nil { + expTime = utils.TimePointer(time.Now().Add(*sq.ttl)) + } + sq.SQItems = append(sq.SQItems, + struct { + EventID string + ExpiryTime *time.Time + }{ev.TenantID(), expTime}) + for metricID, metric := range sq.SQMetrics { if err := metric.AddEvent(ev); err != nil { utils.Logger.Warning(fmt.Sprintf(" metricID: %s, add eventID: %s, error: %s",