Pass a TracerProvider via construct settings to all the components (#3592)

Followup PR will use the passed tracer to construct obsreport.

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
Bogdan Drutu 2021-07-12 11:01:06 -07:00 committed by GitHub
parent e5f98760de
commit baf89f11bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 106 additions and 60 deletions

View File

@ -17,6 +17,7 @@ package componenttest
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -28,8 +29,9 @@ import (
// NewNopExporterCreateSettings returns a new nop settings for Create*Exporter functions.
func NewNopExporterCreateSettings() component.ExporterCreateSettings {
return component.ExporterCreateSettings{
Logger: zap.NewNop(),
BuildInfo: component.DefaultBuildInfo(),
Logger: zap.NewNop(),
TracerProvider: trace.NewNoopTracerProvider(),
BuildInfo: component.DefaultBuildInfo(),
}
}

View File

@ -17,6 +17,7 @@ package componenttest
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -27,8 +28,9 @@ import (
// NewNopExtensionCreateSettings returns a new nop settings for Create*Extension functions.
func NewNopExtensionCreateSettings() component.ExtensionCreateSettings {
return component.ExtensionCreateSettings{
Logger: zap.NewNop(),
BuildInfo: component.DefaultBuildInfo(),
Logger: zap.NewNop(),
TracerProvider: trace.NewNoopTracerProvider(),
BuildInfo: component.DefaultBuildInfo(),
}
}

View File

@ -17,6 +17,7 @@ package componenttest
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -29,8 +30,9 @@ import (
// NewNopProcessorCreateSettings returns a new nop settings for Create*Processor functions.
func NewNopProcessorCreateSettings() component.ProcessorCreateSettings {
return component.ProcessorCreateSettings{
Logger: zap.NewNop(),
BuildInfo: component.DefaultBuildInfo(),
Logger: zap.NewNop(),
TracerProvider: trace.NewNoopTracerProvider(),
BuildInfo: component.DefaultBuildInfo(),
}
}

View File

@ -17,6 +17,7 @@ package componenttest
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -28,8 +29,9 @@ import (
// NewNopReceiverCreateSettings returns a new nop settings for Create*Receiver functions.
func NewNopReceiverCreateSettings() component.ReceiverCreateSettings {
return component.ReceiverCreateSettings{
Logger: zap.NewNop(),
BuildInfo: component.DefaultBuildInfo(),
Logger: zap.NewNop(),
TracerProvider: trace.NewNoopTracerProvider(),
BuildInfo: component.DefaultBuildInfo(),
}
}

View File

@ -17,6 +17,7 @@ package component
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/config"
@ -52,6 +53,9 @@ type ExporterCreateSettings struct {
// component to be used later as well.
Logger *zap.Logger
// TracerProvider that the factory can pass to other instrumented third-party libraries.
TracerProvider trace.TracerProvider
// BuildInfo can be used by components for informational purposes
BuildInfo BuildInfo
}

View File

@ -17,6 +17,7 @@ package component
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/config"
@ -52,6 +53,9 @@ type ExtensionCreateSettings struct {
// component to be used later as well.
Logger *zap.Logger
// TracerProvider that the factory can pass to other instrumented third-party libraries.
TracerProvider trace.TracerProvider
// BuildInfo can be used by components for informational purposes
BuildInfo BuildInfo
}

View File

@ -17,6 +17,7 @@ package component
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component/componenterror"
@ -54,6 +55,9 @@ type ProcessorCreateSettings struct {
// component to be used later as well.
Logger *zap.Logger
// TracerProvider that the factory can pass to other instrumented third-party libraries.
TracerProvider trace.TracerProvider
// BuildInfo can be used by components for informational purposes
BuildInfo BuildInfo
}

View File

@ -17,6 +17,7 @@ package component
import (
"context"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/config"
@ -61,6 +62,9 @@ type ReceiverCreateSettings struct {
// component to be used later as well.
Logger *zap.Logger
// TracerProvider that the factory can pass to other instrumented third-party libraries.
TracerProvider trace.TracerProvider
// BuildInfo can be used by components for informational purposes.
BuildInfo BuildInfo
}

View File

@ -18,6 +18,7 @@ import (
"context"
"fmt"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -143,6 +144,7 @@ type exportersRequiredDataTypes map[config.Exporter]dataTypeRequirements
// BuildExporters builds Exporters from config.
func BuildExporters(
logger *zap.Logger,
tracerProvider trace.TracerProvider,
buildInfo component.BuildInfo,
config *config.Config,
factories map[config.Type]component.ExporterFactory,
@ -155,17 +157,18 @@ func BuildExporters(
exporters := make(Exporters)
// BuildExporters exporters based on configuration and required input data types.
for _, cfg := range config.Exporters {
for _, expCfg := range config.Exporters {
set := component.ExporterCreateSettings{
Logger: logger.With(zap.Stringer(zapNameKey, cfg.ID())),
BuildInfo: buildInfo,
Logger: logger.With(zap.Stringer(zapNameKey, expCfg.ID())),
TracerProvider: tracerProvider,
BuildInfo: buildInfo,
}
exp, err := buildExporter(context.Background(), factories, set, cfg, exporterInputDataTypes)
exp, err := buildExporter(context.Background(), factories, set, expCfg, exporterInputDataTypes)
if err != nil {
return nil, err
}
exporters[cfg] = exp
exporters[expCfg] = exp
}
return exporters, nil

View File

@ -21,6 +21,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -60,7 +61,7 @@ func TestBuildExporters(t *testing.T) {
},
}
exporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
exporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
require.NotNil(t, exporters)
@ -89,7 +90,7 @@ func TestBuildExporters(t *testing.T) {
// This should result in creating an exporter that has none of consumption
// functions set.
delete(cfg.Service.Pipelines, "trace")
exporters, err = BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
exporters, err = BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NotNil(t, exporters)
assert.NoError(t, err)
@ -127,7 +128,7 @@ func TestBuildExporters_BuildLogs(t *testing.T) {
},
}
exporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
exporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
require.NotNil(t, exporters)
@ -152,7 +153,7 @@ func TestBuildExporters_BuildLogs(t *testing.T) {
// This should result in creating an exporter that has none of consumption
// functions set.
delete(cfg.Service.Pipelines, "logs")
exporters, err = BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
exporters, err = BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NotNil(t, exporters)
assert.Nil(t, err)
@ -238,7 +239,7 @@ func TestBuildExporters_NotSupportedDataType(t *testing.T) {
cfg, err := configtest.LoadConfigAndValidate(path.Join("testdata", test.configFile), factories)
require.Nil(t, err)
exporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
exporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.Error(t, err)
assert.Zero(t, len(exporters))
})

View File

@ -18,6 +18,7 @@ import (
"context"
"fmt"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -113,6 +114,7 @@ func (exts Extensions) ToMap() map[config.ComponentID]component.Extension {
// BuildExtensions builds Extensions from config.
func BuildExtensions(
logger *zap.Logger,
tracerProvider trace.TracerProvider,
buildInfo component.BuildInfo,
config *config.Config,
factories map[config.Type]component.ExtensionFactory,
@ -126,8 +128,9 @@ func BuildExtensions(
}
set := component.ExtensionCreateSettings{
Logger: logger.With(zap.Stringer(zapNameKey, extCfg.ID())),
BuildInfo: buildInfo,
Logger: logger.With(zap.Stringer(zapNameKey, extCfg.ID())),
TracerProvider: tracerProvider,
BuildInfo: buildInfo,
}
ext, err := buildExtension(context.Background(), factories, set, extCfg)
if err != nil {

View File

@ -20,6 +20,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -115,7 +116,7 @@ func TestService_setupExtensions(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ext, err := BuildExtensions(zap.NewNop(), component.DefaultBuildInfo(), tt.config, tt.factories.Extensions)
ext, err := BuildExtensions(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), tt.config, tt.factories.Extensions)
assert.Error(t, err)
assert.Equal(t, tt.wantErrMsg, err.Error())

View File

@ -18,6 +18,7 @@ import (
"context"
"fmt"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -81,23 +82,25 @@ func (bps BuiltPipelines) ShutdownProcessors(ctx context.Context) error {
// pipelinesBuilder builds Pipelines from config.
type pipelinesBuilder struct {
logger *zap.Logger
buildInfo component.BuildInfo
config *config.Config
exporters Exporters
factories map[config.Type]component.ProcessorFactory
logger *zap.Logger
tracerProvider trace.TracerProvider
buildInfo component.BuildInfo
config *config.Config
exporters Exporters
factories map[config.Type]component.ProcessorFactory
}
// BuildPipelines builds pipeline processors from config. Requires exporters to be already
// built via BuildExporters.
func BuildPipelines(
logger *zap.Logger,
tracerProvider trace.TracerProvider,
buildInfo component.BuildInfo,
config *config.Config,
exporters Exporters,
factories map[config.Type]component.ProcessorFactory,
) (BuiltPipelines, error) {
pb := &pipelinesBuilder{logger, buildInfo, config, exporters, factories}
pb := &pipelinesBuilder{logger, tracerProvider, buildInfo, config, exporters, factories}
pipelineProcessors := make(BuiltPipelines)
for _, pipeline := range pb.config.Service.Pipelines {
@ -151,8 +154,9 @@ func (pb *pipelinesBuilder) buildPipeline(ctx context.Context, pipelineCfg *conf
// which we will build in the next loop iteration).
var err error
set := component.ProcessorCreateSettings{
Logger: pb.logger.With(zap.String(zapKindKey, zapKindProcessor), zap.Stringer(zapNameKey, procCfg.ID())),
BuildInfo: pb.buildInfo,
Logger: pb.logger.With(zap.String(zapKindKey, zapKindProcessor), zap.Stringer(zapNameKey, procCfg.ID())),
TracerProvider: pb.tracerProvider,
BuildInfo: pb.buildInfo,
}
switch pipelineCfg.InputType {

View File

@ -21,6 +21,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -112,7 +113,7 @@ func TestBuildPipelines_BuildVarious(t *testing.T) {
cfg := createExampleConfig(dataType)
// BuildProcessors the pipeline
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
if test.shouldFail {
assert.Error(t, err)
return
@ -120,7 +121,7 @@ func TestBuildPipelines_BuildVarious(t *testing.T) {
require.NoError(t, err)
require.EqualValues(t, 1, len(allExporters))
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.NoError(t, err)
require.NotNil(t, pipelineProcessors)
@ -184,9 +185,9 @@ func testPipeline(t *testing.T, pipelineName string, exporterIDs []config.Compon
require.Nil(t, err)
// BuildProcessors the pipeline
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.NoError(t, err)
require.NotNil(t, pipelineProcessors)
@ -258,10 +259,10 @@ func TestBuildPipelines_NotSupportedDataType(t *testing.T) {
cfg, err := configtest.LoadConfigAndValidate(path.Join("testdata", test.configFile), factories)
require.Nil(t, err)
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.Error(t, err)
assert.Zero(t, len(pipelineProcessors))
})

View File

@ -19,6 +19,7 @@ import (
"errors"
"fmt"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -89,6 +90,7 @@ type receiversBuilder struct {
// BuildReceivers builds Receivers from config.
func BuildReceivers(
logger *zap.Logger,
tracerProvider trace.TracerProvider,
buildInfo component.BuildInfo,
config *config.Config,
builtPipelines BuiltPipelines,
@ -97,12 +99,13 @@ func BuildReceivers(
rb := &receiversBuilder{logger.With(zap.String(zapKindKey, zapKindReceiver)), buildInfo, config, builtPipelines, factories}
receivers := make(Receivers)
for _, cfg := range rb.config.Receivers {
for _, recvCfg := range rb.config.Receivers {
set := component.ReceiverCreateSettings{
Logger: rb.logger.With(zap.Stringer(zapNameKey, cfg.ID())),
BuildInfo: buildInfo,
Logger: rb.logger.With(zap.Stringer(zapNameKey, recvCfg.ID())),
TracerProvider: tracerProvider,
BuildInfo: buildInfo,
}
rcv, err := rb.buildReceiver(context.Background(), set, cfg)
rcv, err := rb.buildReceiver(context.Background(), set, recvCfg)
if err != nil {
if err == errUnusedReceiver {
set.Logger.Info("Ignoring receiver as it is not used by any pipeline")
@ -110,7 +113,7 @@ func BuildReceivers(
}
return nil, err
}
receivers[cfg] = rcv
receivers[recvCfg] = rcv
}
return receivers, nil

View File

@ -21,6 +21,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -100,11 +101,11 @@ func testReceivers(
require.NoError(t, err)
// Build the pipeline
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.NoError(t, err)
receivers, err := BuildReceivers(zap.NewNop(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
receivers, err := BuildReceivers(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
assert.NoError(t, err)
require.NotNil(t, receivers)
@ -201,16 +202,16 @@ func TestBuildReceivers_BuildCustom(t *testing.T) {
cfg := createExampleConfig(dataType)
// Build the pipeline
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
if test.shouldFail {
assert.Error(t, err)
return
}
assert.NoError(t, err)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.NoError(t, err)
receivers, err := BuildReceivers(zap.NewNop(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
receivers, err := BuildReceivers(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
assert.NoError(t, err)
require.NotNil(t, receivers)
@ -302,11 +303,11 @@ func TestBuildReceivers_Unused(t *testing.T) {
assert.NoError(t, err)
// Build the pipeline
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.NoError(t, err)
receivers, err := BuildReceivers(zap.NewNop(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
receivers, err := BuildReceivers(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
assert.NoError(t, err)
assert.NotNil(t, receivers)
@ -338,13 +339,13 @@ func TestBuildReceivers_NotSupportedDataType(t *testing.T) {
assert.NoError(t, err)
require.NotNil(t, cfg)
allExporters, err := BuildExporters(zap.NewNop(), component.DefaultBuildInfo(), cfg, factories.Exporters)
allExporters, err := BuildExporters(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, factories.Exporters)
assert.NoError(t, err)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
pipelineProcessors, err := BuildPipelines(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, allExporters, factories.Processors)
assert.NoError(t, err)
receivers, err := BuildReceivers(zap.NewNop(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
receivers, err := BuildReceivers(zap.NewNop(), trace.NewNoopTracerProvider(), component.DefaultBuildInfo(), cfg, pipelineProcessors, factories.Receivers)
assert.Error(t, err)
assert.Zero(t, len(receivers))
})

View File

@ -18,6 +18,8 @@ import (
"context"
"fmt"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
"go.opentelemetry.io/collector/component"
@ -32,6 +34,7 @@ type service struct {
buildInfo component.BuildInfo
config *config.Config
logger *zap.Logger
tracerProvider trace.TracerProvider
asyncErrorChannel chan error
builtExporters builder.Exporters
@ -42,10 +45,12 @@ type service struct {
func newService(set *svcSettings) (*service, error) {
srv := &service{
factories: set.Factories,
buildInfo: set.BuildInfo,
config: set.Config,
logger: set.Logger,
factories: set.Factories,
buildInfo: set.BuildInfo,
config: set.Config,
logger: set.Logger,
// TODO: Configure the right tracer provider.
tracerProvider: otel.GetTracerProvider(),
asyncErrorChannel: set.AsyncErrorChannel,
}
@ -126,7 +131,7 @@ func (srv *service) GetExporters() map[config.DataType]map[config.ComponentID]co
func (srv *service) buildExtensions() error {
var err error
srv.builtExtensions, err = builder.BuildExtensions(srv.logger, srv.buildInfo, srv.config, srv.factories.Extensions)
srv.builtExtensions, err = builder.BuildExtensions(srv.logger, srv.tracerProvider, srv.buildInfo, srv.config, srv.factories.Extensions)
if err != nil {
return fmt.Errorf("cannot build builtExtensions: %w", err)
}
@ -157,20 +162,20 @@ func (srv *service) buildPipelines() error {
// First create exporters.
var err error
srv.builtExporters, err = builder.BuildExporters(srv.logger, srv.buildInfo, srv.config, srv.factories.Exporters)
srv.builtExporters, err = builder.BuildExporters(srv.logger, srv.tracerProvider, srv.buildInfo, srv.config, srv.factories.Exporters)
if err != nil {
return fmt.Errorf("cannot build builtExporters: %w", err)
}
// Create pipelines and their processors and plug exporters to the
// end of the pipelines.
srv.builtPipelines, err = builder.BuildPipelines(srv.logger, srv.buildInfo, srv.config, srv.builtExporters, srv.factories.Processors)
srv.builtPipelines, err = builder.BuildPipelines(srv.logger, srv.tracerProvider, srv.buildInfo, srv.config, srv.builtExporters, srv.factories.Processors)
if err != nil {
return fmt.Errorf("cannot build pipelines: %w", err)
}
// Create receivers and plug them into the start of the pipelines.
srv.builtReceivers, err = builder.BuildReceivers(srv.logger, srv.buildInfo, srv.config, srv.builtPipelines, srv.factories.Receivers)
srv.builtReceivers, err = builder.BuildReceivers(srv.logger, srv.tracerProvider, srv.buildInfo, srv.config, srv.builtPipelines, srv.factories.Receivers)
if err != nil {
return fmt.Errorf("cannot build receivers: %w", err)
}