in processor/lsmintervalprocessor/factory.go [44:87]
func createMetricsProcessor(
_ context.Context,
set processor.Settings,
cfg component.Config,
nextConsumer consumer.Metrics,
) (processor.Metrics, error) {
processorConfig, ok := cfg.(*config.Config)
if !ok {
return nil, fmt.Errorf("configuration parsing error")
}
intervalDefs := make([]intervalDef, 0, len(processorConfig.Intervals))
for _, ivl := range processorConfig.Intervals {
ivlDef := intervalDef{Duration: ivl.Duration}
if len(ivl.Statements) > 0 {
parser, err := ottldatapoint.NewParser(
ottlfuncs.StandardFuncs[ottldatapoint.TransformContext](),
set.TelemetrySettings,
)
if err != nil {
return nil, fmt.Errorf(
"failed to create ottl parser for interval %s: %w",
ivl.Duration, err,
)
}
statements, err := parser.ParseStatements(ivl.Statements)
if err != nil {
return nil, fmt.Errorf(
"failed to parse ottl statements for interval %s: %w",
ivl.Duration, err,
)
}
statementSeqs := ottldatapoint.NewStatementSequence(
statements,
set.TelemetrySettings,
ottldatapoint.WithStatementSequenceErrorMode(ottl.PropagateError),
)
ivlDef.Statements = &statementSeqs
}
intervalDefs = append(intervalDefs, ivlDef)
}
return newProcessor(processorConfig, intervalDefs, set.Logger, nextConsumer)
}