func createMetricsProcessor()

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)
}