in otelcollector/prometheusreceiver/internal/metrics_adjuster.go [469:519]
func (a *initialPointAdjuster) adjustMetricSummary(tsm *timeseriesMap, current pmetric.Metric) {
currentPoints := current.Summary().DataPoints()
for i := 0; i < currentPoints.Len(); i++ {
currentSummary := currentPoints.At(i)
// start timestamp was set from _created
if a.useCreatedMetric &&
!currentSummary.Flags().NoRecordedValue() &&
currentSummary.StartTimestamp() < currentSummary.Timestamp() {
continue
}
tsi, found := tsm.get(current, currentSummary.Attributes())
if !found {
// initialize everything.
tsi.summary.startTime = currentSummary.StartTimestamp()
tsi.summary.previousCount = currentSummary.Count()
tsi.summary.previousSum = currentSummary.Sum()
continue
}
if currentSummary.Flags().NoRecordedValue() {
// TODO: Investigate why this does not reset.
currentSummary.SetStartTimestamp(tsi.summary.startTime)
continue
}
if (currentSummary.Count() != 0 &&
tsi.summary.previousCount != 0 &&
currentSummary.Count() < tsi.summary.previousCount) ||
(currentSummary.Sum() != 0 &&
tsi.summary.previousSum != 0 &&
currentSummary.Sum() < tsi.summary.previousSum) {
// reset re-initialize everything.
tsi.summary.startTime = currentSummary.StartTimestamp()
if a.usePointTimeForReset {
tsi.summary.startTime = currentSummary.Timestamp()
currentSummary.SetStartTimestamp(tsi.summary.startTime)
}
tsi.summary.previousCount = currentSummary.Count()
tsi.summary.previousSum = currentSummary.Sum()
continue
}
// Update only previous values.
tsi.summary.previousCount = currentSummary.Count()
tsi.summary.previousSum = currentSummary.Sum()
currentSummary.SetStartTimestamp(tsi.summary.startTime)
}
}