func()

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
}