in collector/receiver/prometheusreceiver/internal/metrics_adjuster.go [367:408]
func (a *initialPointAdjuster) adjustMetricSum(tsm *timeseriesMap, current pmetric.Metric) {
currentPoints := current.Sum().DataPoints()
for i := 0; i < currentPoints.Len(); i++ {
currentSum := currentPoints.At(i)
// start timestamp was set from _created
if a.useCreatedMetric &&
!currentSum.Flags().NoRecordedValue() &&
currentSum.StartTimestamp() < currentSum.Timestamp() {
continue
}
tsi, found := tsm.get(current, currentSum.Attributes())
if !found {
// initialize everything.
tsi.number.startTime = currentSum.StartTimestamp()
tsi.number.previousValue = currentSum.DoubleValue()
continue
}
if currentSum.Flags().NoRecordedValue() {
// TODO: Investigate why this does not reset.
currentSum.SetStartTimestamp(tsi.number.startTime)
continue
}
if currentSum.DoubleValue() < tsi.number.previousValue {
// reset re-initialize everything.
tsi.number.startTime = currentSum.StartTimestamp()
if a.usePointTimeForReset {
tsi.number.startTime = currentSum.Timestamp()
currentSum.SetStartTimestamp(tsi.number.startTime)
}
tsi.number.previousValue = currentSum.DoubleValue()
continue
}
// Update only previous values.
tsi.number.previousValue = currentSum.DoubleValue()
currentSum.SetStartTimestamp(tsi.number.startTime)
}
}