in pulsaradmin/pkg/utils/functions_stats.go [87:145]
func (fs *FunctionStats) CalculateOverall() *FunctionStats {
var (
nonNullInstances int
nonNullInstancesOneMin int
)
for _, functionInstanceStats := range fs.Instances {
functionInstanceStatsData := functionInstanceStats.Metrics
fs.ReceivedTotal += functionInstanceStatsData.ReceivedTotal
fs.ProcessedSuccessfullyTotal += functionInstanceStatsData.ProcessedSuccessfullyTotal
fs.SystemExceptionsTotal += functionInstanceStatsData.SystemExceptionsTotal
fs.UserExceptionsTotal += functionInstanceStatsData.UserExceptionsTotal
if functionInstanceStatsData.AvgProcessLatency != 0 {
if fs.AvgProcessLatency == 0 {
fs.AvgProcessLatency = 0.0
}
fs.AvgProcessLatency += functionInstanceStatsData.AvgProcessLatency
nonNullInstances++
}
fs.OneMin.ReceivedTotal += functionInstanceStatsData.OneMin.ReceivedTotal
fs.OneMin.ProcessedSuccessfullyTotal += functionInstanceStatsData.OneMin.ProcessedSuccessfullyTotal
fs.OneMin.SystemExceptionsTotal += functionInstanceStatsData.OneMin.SystemExceptionsTotal
fs.OneMin.UserExceptionsTotal += functionInstanceStatsData.OneMin.UserExceptionsTotal
if functionInstanceStatsData.OneMin.AvgProcessLatency != 0 {
if fs.OneMin.AvgProcessLatency == 0 {
fs.OneMin.AvgProcessLatency = 0.0
}
fs.OneMin.AvgProcessLatency += functionInstanceStatsData.OneMin.AvgProcessLatency
nonNullInstancesOneMin++
}
if functionInstanceStatsData.LastInvocation != 0 {
if fs.LastInvocation == 0 || functionInstanceStatsData.LastInvocation > fs.LastInvocation {
fs.LastInvocation = functionInstanceStatsData.LastInvocation
}
}
}
// calculate average from sum
if nonNullInstances > 0 {
fs.AvgProcessLatency /= float64(nonNullInstances)
} else {
fs.AvgProcessLatency = 0
}
// calculate 1min average from sum
if nonNullInstancesOneMin > 0 {
fs.OneMin.AvgProcessLatency /= float64(nonNullInstancesOneMin)
} else {
fs.AvgProcessLatency = 0
}
return fs
}