StatS - index SQItems for ExpiryTime/QueueLength to happen

This commit is contained in:
DanB
2018-10-18 19:29:09 +02:00
parent 7f3070d2a7
commit be3b022f61

View File

@@ -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("<StatQueue> metricID: %s, add eventID: %s, error: %s",