agents: create dedicated events for stats processing

This commit is contained in:
ionutboangiu
2025-11-04 13:52:43 +02:00
committed by Dan Christian Bogos
parent daf91dc3fa
commit 344b14709a
4 changed files with 56 additions and 40 deletions

View File

@@ -189,16 +189,20 @@ 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(),
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

@@ -467,16 +467,20 @@ 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(),
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

@@ -465,16 +465,20 @@ 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(),
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

@@ -207,16 +207,20 @@ 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(),
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)