agents: create dedicated events for stats processing

This commit is contained in:
ionutboangiu
2025-07-31 13:19:16 +03:00
committed by Ionut Boangiu
parent 3077544d62
commit 9833152e38
4 changed files with 60 additions and 40 deletions

View File

@@ -257,16 +257,21 @@ func processRequest(ctx *context.Context, reqProcessor *config.RequestProcessor,
return true, nil
}
// Clone is needed to prevent data races if requests are sent
// asynchronously.
ev := cgrEv.Clone()
ev.Event[utils.ReplyState] = replyState
ev.Event[utils.StartTime] = startTime
ev.Event[utils.EndTime] = endTime
ev.Event[utils.ProcessingTime] = endTime.Sub(startTime)
ev.Event[utils.Source] = agentName
ev.APIOpts[utils.MetaEventType] = utils.ProcessTime
ev := &utils.CGREvent{
Tenant: cgrEv.Tenant,
ID: utils.GenUUID(),
Time: utils.TimePointer(time.Now()),
Event: map[string]any{
utils.ReplyState: replyState,
utils.StartTime: startTime,
utils.EndTime: endTime,
utils.ProcessingTime: endTime.Sub(startTime),
utils.Source: agentName,
},
APIOpts: map[string]any{
utils.MetaEventType: utils.ProcessTime,
},
}
if rawStatIDs != "" {
statIDs := strings.Split(rawStatIDs, utils.ANDSep)

View File

@@ -526,16 +526,21 @@ func (ra *RadiusAgent) processRequest(req *radigo.Packet, reqProcessor *config.R
return true, nil
}
// Clone is needed to prevent data races if requests are sent
// asynchronously.
ev := cgrEv.Clone()
ev.Event[utils.ReplyState] = replyState
ev.Event[utils.StartTime] = startTime
ev.Event[utils.EndTime] = endTime
ev.Event[utils.ProcessingTime] = endTime.Sub(startTime)
ev.Event[utils.Source] = utils.RadiusAgent
ev.APIOpts[utils.MetaEventType] = utils.ProcessTime
ev := &utils.CGREvent{
Tenant: cgrEv.Tenant,
ID: utils.GenUUID(),
Time: utils.TimePointer(time.Now()),
Event: map[string]any{
utils.ReplyState: replyState,
utils.StartTime: startTime,
utils.EndTime: endTime,
utils.ProcessingTime: endTime.Sub(startTime),
utils.Source: utils.RadiusAgent,
},
APIOpts: map[string]any{
utils.MetaEventType: utils.ProcessTime,
},
}
if rawStatIDs != "" {
statIDs := strings.Split(rawStatIDs, utils.ANDSep)

View File

@@ -493,16 +493,21 @@ func (sa *SIPAgent) processRequest(reqProcessor *config.RequestProcessor,
return true, nil
}
// Clone is needed to prevent data races if requests are sent
// asynchronously.
ev := cgrEv.Clone()
ev.Event[utils.ReplyState] = replyState
ev.Event[utils.StartTime] = startTime
ev.Event[utils.EndTime] = endTime
ev.Event[utils.ProcessingTime] = endTime.Sub(startTime)
ev.Event[utils.Source] = utils.SIPAgent
ev.APIOpts[utils.MetaEventType] = utils.ProcessTime
ev := &utils.CGREvent{
Tenant: cgrEv.Tenant,
ID: utils.GenUUID(),
Time: utils.TimePointer(time.Now()),
Event: map[string]any{
utils.ReplyState: replyState,
utils.StartTime: startTime,
utils.EndTime: endTime,
utils.ProcessingTime: endTime.Sub(startTime),
utils.Source: utils.SIPAgent,
},
APIOpts: map[string]any{
utils.MetaEventType: utils.ProcessTime,
},
}
if rawStatIDs != "" {
statIDs := strings.Split(rawStatIDs, utils.ANDSep)

View File

@@ -250,16 +250,21 @@ func (erS *ERService) processEvent(cgrEv *utils.CGREvent,
return
}
// Clone is needed to prevent data races if requests are sent
// asynchronously.
ev := cgrEv.Clone()
ev.Event[utils.ReplyState] = replyState
ev.Event[utils.StartTime] = startTime
ev.Event[utils.EndTime] = endTime
ev.Event[utils.ProcessingTime] = endTime.Sub(startTime)
ev.Event[utils.Source] = utils.ERs
ev.APIOpts[utils.MetaEventType] = utils.ProcessTime
ev := &utils.CGREvent{
Tenant: cgrEv.Tenant,
ID: utils.GenUUID(),
Time: utils.TimePointer(time.Now()),
Event: map[string]any{
utils.ReplyState: replyState,
utils.StartTime: startTime,
utils.EndTime: endTime,
utils.ProcessingTime: endTime.Sub(startTime),
utils.Source: utils.ERs,
},
APIOpts: map[string]any{
utils.MetaEventType: utils.ProcessTime,
},
}
if rawStatIDs != "" {
statIDs := strings.Split(rawStatIDs, utils.ANDSep)