in processor/lsmintervalprocessor/internal/merger/datapoints.go [81:114]
func mergeDelta[DPS dataPointSlice[DP], DP dataPoint[DP]](
from DPS,
toMetricID identity.Metric,
toMetric pdataMetric,
addDP addDPFunc[DP],
maxExponentialHistogramBuckets int,
) error {
var errs []error
for i := 0; i < from.Len(); i++ {
fromDP := from.At(i)
var err error
if toDP, exists := addDP(toMetricID, toMetric, fromDP); exists {
switch fromDP := any(fromDP).(type) {
case pmetric.NumberDataPoint:
err = mergeDeltaSumDP(fromDP, any(toDP).(pmetric.NumberDataPoint))
case pmetric.HistogramDataPoint:
err = mergeDeltaHistogramDP(fromDP, any(toDP).(pmetric.HistogramDataPoint))
case pmetric.ExponentialHistogramDataPoint:
err = mergeDeltaExponentialHistogramDP(
fromDP, any(toDP).(pmetric.ExponentialHistogramDataPoint),
maxExponentialHistogramBuckets,
)
}
toDP.SetTimestamp(fromDP.Timestamp())
}
if err != nil {
errs = append(errs, err)
}
}
if len(errs) > 0 {
return fmt.Errorf("failed to merge delta datapoints: %w", errors.Join(errs...))
}
return nil
}