diff --git a/.github/actions/setup-node.js/action.yml b/.github/actions/setup-node.js/action.yml index 4f421b6a2a9..21344f6c734 100644 --- a/.github/actions/setup-node.js/action.yml +++ b/.github/actions/setup-node.js/action.yml @@ -8,7 +8,7 @@ runs: run: | echo "JAEGER_UI_NODE_JS_VERSION=$(cat jaeger-ui/.nvmrc)" >> ${GITHUB_ENV} - - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v4.0.2 + - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ env.JAEGER_UI_NODE_JS_VERSION }} cache: 'yarn' diff --git a/.github/workflows/ci-build-spm.yml b/.github/workflows/ci-build-spm.yml index 3ef3f401146..e8d91bb43ae 100644 --- a/.github/workflows/ci-build-spm.yml +++ b/.github/workflows/ci-build-spm.yml @@ -16,19 +16,33 @@ permissions: contents: read jobs: - SPM: + spm: runs-on: ubuntu-latest steps: - - name: Harden Runner - uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 - with: - go-version: 1.22.x - - - name: Run SPM Test - run: ./scripts/build-SPM.sh \ No newline at end of file + - name: Harden Runner + uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + submodules: true + + - name: Fetch git tags + run: | + git fetch --prune --unshallow --tags + + - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 + with: + go-version: 1.22.x + + - name: Setup Node.js version + uses: ./.github/actions/setup-node.js + + - name: Temporary - only run the build + run: + cd docker-compose/monitor && make build + + - name: Run SPM Test + run: ./scripts/build-SPM.sh + diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 3352ef896e7..1792f0181c0 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -24,4 +24,4 @@ jobs: - name: 'Checkout Repository' uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: 'Dependency Review' - uses: actions/dependency-review-action@0c155c5e8556a497adf53f2c18edabf945ed8e70 # v4.3.2 + uses: actions/dependency-review-action@72eb03d02c7872a771aacd928f3123ac62ad6d3a # v4.3.3 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 702508173fa..82865b5d9ac 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -64,7 +64,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif diff --git a/Makefile.Crossdock.mk b/Makefile.Crossdock.mk index 2e702310e2b..56d6f595767 100644 --- a/Makefile.Crossdock.mk +++ b/Makefile.Crossdock.mk @@ -32,8 +32,8 @@ build-crossdock-fresh: build-crossdock-linux make crossdock-fresh .PHONY: crossdock-docker-images-jaeger-backend -crossdock-docker-images-jaeger-backend: PLATFORMS=linux/amd64 -crossdock-docker-images-jaeger-backend: create-baseimg create-debugimg +crossdock-docker-images-jaeger-backend: PLATFORMS=linux/$(shell go env GOARCH) +crossdock-docker-images-jaeger-backend: create-baseimg create-fake-debugimg for component in "jaeger-agent" "jaeger-collector" "jaeger-query" "jaeger-ingester" "all-in-one" ; do \ regex="jaeger-(.*)"; \ component_suffix=$$component; \ diff --git a/cmd/collector/app/handler/otlp_receiver.go b/cmd/collector/app/handler/otlp_receiver.go index 84177b69592..402ad810a70 100644 --- a/cmd/collector/app/handler/otlp_receiver.go +++ b/cmd/collector/app/handler/otlp_receiver.go @@ -66,7 +66,7 @@ func startOTLPReceiver( // from here: params that can be mocked in tests otlpFactory receiver.Factory, newTraces func(consume consumer.ConsumeTracesFunc, options ...consumer.Option) (consumer.Traces, error), - createTracesReceiver func(ctx context.Context, set receiver.CreateSettings, + createTracesReceiver func(ctx context.Context, set receiver.Settings, cfg component.Config, nextConsumer consumer.Traces) (receiver.Traces, error), ) (receiver.Traces, error) { otlpReceiverConfig := otlpFactory.CreateDefaultConfig().(*otlpreceiver.Config) @@ -76,7 +76,7 @@ func startOTLPReceiver( // TODO this could be wired into changing healthcheck.HealthCheck logger.Info("OTLP receiver status change", zap.Stringer("status", ev.Status())) } - otlpReceiverSettings := receiver.CreateSettings{ + otlpReceiverSettings := receiver.Settings{ TelemetrySettings: component.TelemetrySettings{ Logger: logger, TracerProvider: nooptrace.NewTracerProvider(), diff --git a/cmd/collector/app/handler/otlp_receiver_test.go b/cmd/collector/app/handler/otlp_receiver_test.go index 73bfcc6e1e6..096379e3376 100644 --- a/cmd/collector/app/handler/otlp_receiver_test.go +++ b/cmd/collector/app/handler/otlp_receiver_test.go @@ -115,7 +115,7 @@ func TestStartOtlpReceiver_Error(t *testing.T) { assert.Contains(t, err.Error(), "could not create the OTLP consumer") createTracesReceiver := func( - context.Context, receiver.CreateSettings, component.Config, consumer.Traces, + context.Context, receiver.Settings, component.Config, consumer.Traces, ) (receiver.Traces, error) { return nil, errors.New("mock error") } diff --git a/cmd/collector/app/handler/zipkin_receiver.go b/cmd/collector/app/handler/zipkin_receiver.go index a477c970bf1..186a4ac8407 100644 --- a/cmd/collector/app/handler/zipkin_receiver.go +++ b/cmd/collector/app/handler/zipkin_receiver.go @@ -50,7 +50,7 @@ func startZipkinReceiver( // from here: params that can be mocked in tests zipkinFactory receiver.Factory, newTraces func(consume consumer.ConsumeTracesFunc, options ...consumer.Option) (consumer.Traces, error), - createTracesReceiver func(ctx context.Context, set receiver.CreateSettings, + createTracesReceiver func(ctx context.Context, set receiver.Settings, cfg component.Config, nextConsumer consumer.Traces) (receiver.Traces, error), ) (receiver.Traces, error) { receiverConfig := zipkinFactory.CreateDefaultConfig().(*zipkinreceiver.Config) @@ -60,7 +60,7 @@ func startZipkinReceiver( CORS: options.HTTP.CORS, // TODO keepAlive not supported? }) - receiverSettings := receiver.CreateSettings{ + receiverSettings := receiver.Settings{ TelemetrySettings: component.TelemetrySettings{ Logger: logger, TracerProvider: nooptrace.NewTracerProvider(), diff --git a/cmd/collector/app/handler/zipkin_receiver_test.go b/cmd/collector/app/handler/zipkin_receiver_test.go index 54abedd1964..ee28d48a12b 100644 --- a/cmd/collector/app/handler/zipkin_receiver_test.go +++ b/cmd/collector/app/handler/zipkin_receiver_test.go @@ -153,7 +153,7 @@ func TestStartZipkinReceiver_Error(t *testing.T) { assert.Contains(t, err.Error(), "could not create Zipkin consumer") createTracesReceiver := func( - context.Context, receiver.CreateSettings, component.Config, consumer.Traces, + context.Context, receiver.Settings, component.Config, consumer.Traces, ) (receiver.Traces, error) { return nil, errors.New("mock error") } diff --git a/cmd/jaeger/internal/command.go b/cmd/jaeger/internal/command.go index d33d6fc5aba..c6e84d3ccc9 100644 --- a/cmd/jaeger/internal/command.go +++ b/cmd/jaeger/internal/command.go @@ -53,7 +53,7 @@ func Command() *cobra.Command { }, } - cmd := otelcol.NewCommand(settings) + cmd := otelcol.NewCommandMustSetProvider(settings) // We want to support running the binary in all-in-one mode without a config file. // Since there are no explicit hooks in OTel Collector for that today (as of v0.87), diff --git a/cmd/jaeger/internal/exporters/storageexporter/exporter.go b/cmd/jaeger/internal/exporters/storageexporter/exporter.go index 70f682f290a..2e29be4cc39 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/exporter.go +++ b/cmd/jaeger/internal/exporters/storageexporter/exporter.go @@ -5,22 +5,20 @@ package storageexporter import ( "context" - "errors" "fmt" - otlp2jaeger "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/pdata/ptrace" "go.uber.org/zap" "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage" - "github.com/jaegertracing/jaeger/storage/spanstore" + "github.com/jaegertracing/jaeger/storage_v2/spanstore" ) type storageExporter struct { - config *Config - logger *zap.Logger - spanWriter spanstore.Writer + config *Config + logger *zap.Logger + traceWriter spanstore.Writer } func newExporter(config *Config, otel component.TelemetrySettings) *storageExporter { @@ -31,13 +29,13 @@ func newExporter(config *Config, otel component.TelemetrySettings) *storageExpor } func (exp *storageExporter) start(_ context.Context, host component.Host) error { - f, err := jaegerstorage.GetStorageFactory(exp.config.TraceStorage, host) + f, err := jaegerstorage.GetStorageFactoryV2(exp.config.TraceStorage, host) if err != nil { return fmt.Errorf("cannot find storage factory: %w", err) } - if exp.spanWriter, err = f.CreateSpanWriter(); err != nil { - return fmt.Errorf("cannot create span writer: %w", err) + if exp.traceWriter, err = f.CreateTraceWriter(); err != nil { + return fmt.Errorf("cannot create trace writer: %w", err) } return nil @@ -49,18 +47,5 @@ func (*storageExporter) close(_ context.Context) error { } func (exp *storageExporter) pushTraces(ctx context.Context, td ptrace.Traces) error { - batches, err := otlp2jaeger.ProtoFromTraces(td) - if err != nil { - return fmt.Errorf("cannot transform OTLP traces to Jaeger format: %w", err) - } - var errs []error - for _, batch := range batches { - for _, span := range batch.Spans { - if span.Process == nil { - span.Process = batch.Process - } - errs = append(errs, exp.spanWriter.WriteSpan(ctx, span)) - } - } - return errors.Join(errs...) + return exp.traceWriter.WriteTraces(ctx, td) } diff --git a/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go b/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go index 1934231c943..1b5d0ca7b3e 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go +++ b/cmd/jaeger/internal/exporters/storageexporter/exporter_test.go @@ -16,8 +16,10 @@ package storageexporter import ( "context" + "errors" "testing" + "github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/storagetest" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" @@ -32,29 +34,28 @@ import ( "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage" "github.com/jaegertracing/jaeger/model" memoryCfg "github.com/jaegertracing/jaeger/pkg/memory/config" + "github.com/jaegertracing/jaeger/storage" + factoryMocks "github.com/jaegertracing/jaeger/storage/mocks" ) -type storageHost struct { - t *testing.T - storageExtension component.Component +type mockStorageExt struct { + name string + factory *factoryMocks.Factory } -func (host storageHost) GetExtensions() map[component.ID]component.Component { - myMap := make(map[component.ID]component.Component) - myMap[jaegerstorage.ID] = host.storageExtension - return myMap +func (*mockStorageExt) Start(context.Context, component.Host) error { + panic("not implemented") } -func (host storageHost) ReportFatalError(err error) { - host.t.Fatal(err) +func (*mockStorageExt) Shutdown(context.Context) error { + panic("not implemented") } -func (storageHost) GetFactory(_ component.Kind, _ component.Type) component.Factory { - return nil -} - -func (storageHost) GetExporters() map[component.DataType]map[component.ID]component.Component { - return nil +func (m *mockStorageExt) Factory(name string) (storage.Factory, bool) { + if m.name == name { + return m.factory, true + } + return nil, false } func TestExporterConfigError(t *testing.T) { @@ -63,8 +64,10 @@ func TestExporterConfigError(t *testing.T) { require.EqualError(t, err, "TraceStorage: non zero value required") } -func TestExporterStartError(t *testing.T) { - host := makeStorageExtension(t, "foo") +func TestExporterStartBadNameError(t *testing.T) { + host := storagetest.NewStorageHost() + host.WithExtension(jaegerstorage.ID, &mockStorageExt{name: "foo"}) + exporter := &storageExporter{ config: &Config{ TraceStorage: "bar", @@ -75,6 +78,26 @@ func TestExporterStartError(t *testing.T) { require.ErrorContains(t, err, "cannot find storage factory") } +func TestExporterStartBadSpanstoreError(t *testing.T) { + factory := new(factoryMocks.Factory) + factory.On("CreateSpanWriter").Return(nil, errors.New("mocked error")) + + host := storagetest.NewStorageHost() + host.WithExtension(jaegerstorage.ID, &mockStorageExt{ + name: "foo", + factory: factory, + }) + + exporter := &storageExporter{ + config: &Config{ + TraceStorage: "foo", + }, + } + err := exporter.start(context.Background(), host) + require.Error(t, err) + require.ErrorContains(t, err, "mocked error") +} + func TestExporter(t *testing.T) { exporterFactory := NewFactory() @@ -92,7 +115,7 @@ func TestExporter(t *testing.T) { err := config.Validate() require.NoError(t, err) - tracesExporter, err := exporterFactory.CreateTracesExporter(ctx, exporter.CreateSettings{ + tracesExporter, err := exporterFactory.CreateTracesExporter(ctx, exporter.Settings{ ID: ID, TelemetrySettings: telemetrySettings, BuildInfo: component.NewDefaultBuildInfo(), @@ -133,11 +156,11 @@ func TestExporter(t *testing.T) { assert.Equal(t, spanID.String(), requiredTrace.Spans[0].SpanID.String()) } -func makeStorageExtension(t *testing.T, memstoreName string) storageHost { +func makeStorageExtension(t *testing.T, memstoreName string) component.Host { extensionFactory := jaegerstorage.NewFactory() storageExtension, err := extensionFactory.CreateExtension( context.Background(), - extension.CreateSettings{ + extension.Settings{ TelemetrySettings: component.TelemetrySettings{ Logger: zap.L(), TracerProvider: nooptrace.NewTracerProvider(), @@ -147,10 +170,13 @@ func makeStorageExtension(t *testing.T, memstoreName string) storageHost { memstoreName: {MaxTraces: 10000}, }}) require.NoError(t, err) - host := storageHost{t: t, storageExtension: storageExtension} + + host := storagetest.NewStorageHost() + host.WithExtension(jaegerstorage.ID, storageExtension) err = storageExtension.Start(context.Background(), host) require.NoError(t, err) t.Cleanup(func() { require.NoError(t, storageExtension.Shutdown(context.Background())) }) + return host } diff --git a/cmd/jaeger/internal/exporters/storageexporter/factory.go b/cmd/jaeger/internal/exporters/storageexporter/factory.go index 2638a949dbe..b7663170eda 100644 --- a/cmd/jaeger/internal/exporters/storageexporter/factory.go +++ b/cmd/jaeger/internal/exporters/storageexporter/factory.go @@ -32,7 +32,7 @@ func createDefaultConfig() component.Config { return &Config{} } -func createTracesExporter(ctx context.Context, set exporter.CreateSettings, config component.Config) (exporter.Traces, error) { +func createTracesExporter(ctx context.Context, set exporter.Settings, config component.Config) (exporter.Traces, error) { cfg := config.(*Config) ex := newExporter(cfg, set.TelemetrySettings) return exporterhelper.NewTracesExporter(ctx, set, cfg, diff --git a/cmd/jaeger/internal/extension/jaegerquery/factory.go b/cmd/jaeger/internal/extension/jaegerquery/factory.go index fcaaf2e6b3e..93d35781e10 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/factory.go +++ b/cmd/jaeger/internal/extension/jaegerquery/factory.go @@ -32,6 +32,6 @@ func createDefaultConfig() component.Config { } // createExtension creates the extension based on this config. -func createExtension(_ context.Context, set extension.CreateSettings, cfg component.Config) (extension.Extension, error) { +func createExtension(_ context.Context, set extension.Settings, cfg component.Config) (extension.Extension, error) { return newServer(cfg.(*Config), set.TelemetrySettings), nil } diff --git a/cmd/jaeger/internal/extension/jaegerquery/factory_test.go b/cmd/jaeger/internal/extension/jaegerquery/factory_test.go index 634343e4475..9a579ce6468 100644 --- a/cmd/jaeger/internal/extension/jaegerquery/factory_test.go +++ b/cmd/jaeger/internal/extension/jaegerquery/factory_test.go @@ -19,7 +19,7 @@ func Test_NewFactory(t *testing.T) { } func Test_CreateExtension(t *testing.T) { - set := extension.CreateSettings{ + set := extension.Settings{ ID: ID, } cfg := createDefaultConfig() diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension.go b/cmd/jaeger/internal/extension/jaegerstorage/extension.go index 3bb1073ddf7..9b5d11fcac1 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension.go @@ -13,6 +13,7 @@ import ( "go.opentelemetry.io/collector/extension" "go.uber.org/zap" + "github.com/jaegertracing/jaeger/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter" esCfg "github.com/jaegertracing/jaeger/pkg/es/config" memoryCfg "github.com/jaegertracing/jaeger/pkg/memory/config" "github.com/jaegertracing/jaeger/pkg/metrics" @@ -22,6 +23,7 @@ import ( "github.com/jaegertracing/jaeger/plugin/storage/grpc" "github.com/jaegertracing/jaeger/plugin/storage/memory" "github.com/jaegertracing/jaeger/storage" + "github.com/jaegertracing/jaeger/storage_v2/spanstore" ) var _ Extension = (*storageExt)(nil) @@ -62,6 +64,15 @@ func GetStorageFactory(name string, host component.Host) (storage.Factory, error return f, nil } +func GetStorageFactoryV2(name string, host component.Host) (spanstore.Factory, error) { + f, err := GetStorageFactory(name, host) + if err != nil { + return nil, err + } + + return factoryadapter.NewFactory(f), nil +} + func newStorageExt(config *Config, otel component.TelemetrySettings) *storageExt { return &storageExt{ config: config, diff --git a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go index d5a6c6c29bf..399358dbd7a 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/extension_test.go @@ -114,12 +114,22 @@ func TestStorageFactoryBadShutdownError(t *testing.T) { require.ErrorIs(t, err, shutdownError) } +func TestStorageFactoryV2Error(t *testing.T) { + host := componenttest.NewNopHost() + _, err := GetStorageFactoryV2("something", host) + require.ErrorContains(t, err, "cannot find extension") +} + func TestStorageExtension(t *testing.T) { const name = "foo" host := storageHost{t: t, storageExtension: startStorageExtension(t, name)} f, err := GetStorageFactory(name, host) require.NoError(t, err) require.NotNil(t, f) + + f2, err := GetStorageFactoryV2(name, host) + require.NoError(t, err) + require.NotNil(t, f2) } func TestBadgerStorageExtension(t *testing.T) { @@ -206,7 +216,7 @@ func makeStorageExtenion(t *testing.T, config *Config) component.Component { extensionFactory := NewFactory() ctx := context.Background() storageExtension, err := extensionFactory.CreateExtension(ctx, - extension.CreateSettings{ + extension.Settings{ ID: ID, TelemetrySettings: noopTelemetrySettings(), BuildInfo: component.NewDefaultBuildInfo(), diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factory.go b/cmd/jaeger/internal/extension/jaegerstorage/factory.go index aef19427e12..79a754b1f26 100644 --- a/cmd/jaeger/internal/extension/jaegerstorage/factory.go +++ b/cmd/jaeger/internal/extension/jaegerstorage/factory.go @@ -30,6 +30,6 @@ func createDefaultConfig() component.Config { } // createExtension creates the extension based on this config. -func createExtension(_ context.Context, set extension.CreateSettings, cfg component.Config) (extension.Extension, error) { +func createExtension(_ context.Context, set extension.Settings, cfg component.Config) (extension.Extension, error) { return newStorageExt(cfg.(*Config), set.TelemetrySettings), nil } diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/README.md b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/README.md new file mode 100644 index 00000000000..d5b7f67011e --- /dev/null +++ b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/README.md @@ -0,0 +1,5 @@ +# Storage Factory Converter + +A temporary v1 storage factory wrapper to implement v2 storage APIs. +This way, the existing v1 storage factories declared in `jaegerstorageextension` +can act as v2 storage while we migrate to v2 storage APIs. diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/factory.go b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/factory.go new file mode 100644 index 00000000000..57b2cece3ca --- /dev/null +++ b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/factory.go @@ -0,0 +1,49 @@ +// Copyright (c) 2024 The Jaeger Authors. +// SPDX-License-Identifier: Apache-2.0 + +package factoryadapter + +import ( + "context" + "io" + + storage_v1 "github.com/jaegertracing/jaeger/storage" + "github.com/jaegertracing/jaeger/storage_v2/spanstore" +) + +type Factory struct { + ss storage_v1.Factory +} + +func NewFactory(ss storage_v1.Factory) spanstore.Factory { + return &Factory{ + ss: ss, + } +} + +// Initialize implements spanstore.Factory. +func (*Factory) Initialize(_ context.Context) error { + panic("not implemented") +} + +// Close implements spanstore.Factory. +func (f *Factory) Close(_ context.Context) error { + if closer, ok := f.ss.(io.Closer); ok { + return closer.Close() + } + return nil +} + +// CreateTraceReader implements spanstore.Factory. +func (*Factory) CreateTraceReader() (spanstore.Reader, error) { + panic("not implemented") +} + +// CreateTraceWriter implements spanstore.Factory. +func (f *Factory) CreateTraceWriter() (spanstore.Writer, error) { + spanWriter, err := f.ss.CreateSpanWriter() + if err != nil { + return nil, err + } + return NewTraceWriter(spanWriter), nil +} diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/factory_test.go b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/factory_test.go new file mode 100644 index 00000000000..1cfcbb0f17b --- /dev/null +++ b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/factory_test.go @@ -0,0 +1,66 @@ +// Copyright (c) 2024 The Jaeger Authors. +// SPDX-License-Identifier: Apache-2.0 + +package factoryadapter + +import ( + "context" + "errors" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/jaegertracing/jaeger/plugin/storage/grpc" + factoryMocks "github.com/jaegertracing/jaeger/storage/mocks" + spanstoreMocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks" +) + +func TestAdapterInitialize(t *testing.T) { + defer func() { + if r := recover(); r == nil { + t.Errorf("initialize did not panic") + } + }() + + f := &Factory{} + _ = f.Initialize(context.Background()) +} + +func TestAdapterCloseNotOk(t *testing.T) { + f := NewFactory(&factoryMocks.Factory{}) + require.NoError(t, f.Close(context.Background())) +} + +func TestAdapterClose(t *testing.T) { + f := NewFactory(grpc.NewFactory()) + require.NoError(t, f.Close(context.Background())) +} + +func TestAdapterCreateTraceReader(t *testing.T) { + defer func() { + if r := recover(); r == nil { + t.Errorf("create trace reader did not panic") + } + }() + + f := &Factory{} + f.CreateTraceReader() +} + +func TestAdapterCreateTraceWriterError(t *testing.T) { + f1 := new(factoryMocks.Factory) + f1.On("CreateSpanWriter").Return(nil, errors.New("mock error")) + + f := NewFactory(f1) + _, err := f.CreateTraceWriter() + require.ErrorContains(t, err, "mock error") +} + +func TestAdapterCreateTraceWriter(t *testing.T) { + f1 := new(factoryMocks.Factory) + f1.On("CreateSpanWriter").Return(new(spanstoreMocks.Writer), nil) + + f := NewFactory(f1) + _, err := f.CreateTraceWriter() + require.NoError(t, err) +} diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/package_test.go b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/package_test.go new file mode 100644 index 00000000000..086d725c713 --- /dev/null +++ b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/package_test.go @@ -0,0 +1,14 @@ +// Copyright (c) 2024 The Jaeger Authors. +// SPDX-License-Identifier: Apache-2.0 + +package factoryadapter + +import ( + "testing" + + "github.com/jaegertracing/jaeger/pkg/testutils" +) + +func TestMain(m *testing.M) { + testutils.VerifyGoLeaks(m) +} diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/writer.go b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/writer.go new file mode 100644 index 00000000000..c3093e28b65 --- /dev/null +++ b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/writer.go @@ -0,0 +1,47 @@ +// Copyright (c) 2024 The Jaeger Authors. +// SPDX-License-Identifier: Apache-2.0 + +package factoryadapter + +import ( + "context" + "errors" + "fmt" + + otlp2jaeger "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger" + "go.opentelemetry.io/collector/pdata/ptrace" + + spanstore_v1 "github.com/jaegertracing/jaeger/storage/spanstore" + "github.com/jaegertracing/jaeger/storage_v2/spanstore" +) + +type TraceWriter struct { + spanWriter spanstore_v1.Writer +} + +func NewTraceWriter(spanWriter spanstore_v1.Writer) spanstore.Writer { + return &TraceWriter{ + spanWriter: spanWriter, + } +} + +// WriteTraces implements spanstore.Writer. +func (t *TraceWriter) WriteTraces(ctx context.Context, td ptrace.Traces) error { + batches, err := otlp2jaeger.ProtoFromTraces(td) + if err != nil { + return fmt.Errorf("cannot transform OTLP traces to Jaeger format: %w", err) + } + var errs []error + for _, batch := range batches { + for _, span := range batch.Spans { + if span.Process == nil { + span.Process = batch.Process + } + err := t.spanWriter.WriteSpan(ctx, span) + if err != nil { + errs = append(errs, err) + } + } + } + return errors.Join(errs...) +} diff --git a/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/writer_test.go b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/writer_test.go new file mode 100644 index 00000000000..df5966cd33f --- /dev/null +++ b/cmd/jaeger/internal/extension/jaegerstorage/factoryadapter/writer_test.go @@ -0,0 +1,72 @@ +// Copyright (c) 2024 The Jaeger Authors. +// SPDX-License-Identifier: Apache-2.0 + +package factoryadapter + +import ( + "context" + "errors" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" + + "github.com/jaegertracing/jaeger/model" + "github.com/jaegertracing/jaeger/plugin/storage/memory" + spanstoreMocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks" +) + +func TestWriteTraces(t *testing.T) { + memstore := memory.NewStore() + traceWriter := &TraceWriter{ + spanWriter: memstore, + } + + td := makeTraces() + err := traceWriter.WriteTraces(context.Background(), td) + require.NoError(t, err) + + tdID := td.ResourceSpans().At(0).ScopeSpans().At(0).Spans().At(0).TraceID() + traceID, err := model.TraceIDFromBytes(tdID[:]) + require.NoError(t, err) + trace, err := memstore.GetTrace(context.Background(), traceID) + require.NoError(t, err) + require.NotNil(t, trace) + assert.Len(t, trace.Spans, 1) +} + +func TestWriteTracesError(t *testing.T) { + mockstore := spanstoreMocks.NewWriter(t) + mockstore.On( + "WriteSpan", + mock.AnythingOfType("context.backgroundCtx"), + mock.AnythingOfType("*model.Span"), + ).Return(errors.New("mocked error")) + + traceWriter := &TraceWriter{ + spanWriter: mockstore, + } + + err := traceWriter.WriteTraces(context.Background(), makeTraces()) + require.ErrorContains(t, err, "mocked error") +} + +func makeTraces() ptrace.Traces { + traces := ptrace.NewTraces() + rSpans := traces.ResourceSpans().AppendEmpty() + sSpans := rSpans.ScopeSpans().AppendEmpty() + span := sSpans.Spans().AppendEmpty() + + spanID := pcommon.NewSpanIDEmpty() + spanID[5] = 5 // 0000000000050000 + span.SetSpanID(spanID) + + traceID := pcommon.NewTraceIDEmpty() + traceID[15] = 1 // 00000000000000000000000000000001 + span.SetTraceID(traceID) + + return traces +} diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/config_test.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/config_test.go index a347c276450..98435b3e2cf 100644 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/config_test.go +++ b/cmd/jaeger/internal/integration/receivers/storagereceiver/config_test.go @@ -53,7 +53,7 @@ func TestLoadConfig(t *testing.T) { sub, err := cm.Sub(tt.id.String()) require.NoError(t, err) - require.NoError(t, component.UnmarshalConfig(sub, cfg)) + require.NoError(t, sub.Unmarshal(cfg)) if tt.expectedErr != nil { require.ErrorContains(t, component.ValidateConfig(cfg), tt.expectedErr.Error()) diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/factory.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/factory.go index c3b63f3fdab..09abc498e72 100644 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/factory.go +++ b/cmd/jaeger/internal/integration/receivers/storagereceiver/factory.go @@ -29,7 +29,7 @@ func createDefaultConfig() component.Config { return &Config{} } -func createTracesReceiver(_ context.Context, set receiver.CreateSettings, config component.Config, nextConsumer consumer.Traces) (receiver.Traces, error) { +func createTracesReceiver(_ context.Context, set receiver.Settings, config component.Config, nextConsumer consumer.Traces) (receiver.Traces, error) { cfg := config.(*Config) return newTracesReceiver(cfg, set, nextConsumer) diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/factory_test.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/factory_test.go index a697a1ec4aa..8b94fa2304b 100644 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/factory_test.go +++ b/cmd/jaeger/internal/integration/receivers/storagereceiver/factory_test.go @@ -22,7 +22,7 @@ func TestCreateDefaultConfig(t *testing.T) { func TestCreateTracesReceiver(t *testing.T) { cfg := createDefaultConfig().(*Config) f := NewFactory() - r, err := f.CreateTracesReceiver(context.Background(), receivertest.NewNopCreateSettings(), cfg, nil) + r, err := f.CreateTracesReceiver(context.Background(), receivertest.NewNopSettings(), cfg, nil) require.NoError(t, err) assert.NotNil(t, r) } diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver.go index 1e8400660ca..d6f93ef5ccd 100644 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver.go +++ b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver.go @@ -22,7 +22,7 @@ import ( type storageReceiver struct { cancelConsumeLoop context.CancelFunc config *Config - settings receiver.CreateSettings + settings receiver.Settings consumedTraces map[model.TraceID]*consumedTrace nextConsumer consumer.Traces spanReader spanstore.Reader @@ -32,7 +32,7 @@ type consumedTrace struct { spanIDs map[model.SpanID]struct{} } -func newTracesReceiver(config *Config, set receiver.CreateSettings, nextConsumer consumer.Traces) (*storageReceiver, error) { +func newTracesReceiver(config *Config, set receiver.Settings, nextConsumer consumer.Traces) (*storageReceiver, error) { return &storageReceiver{ config: config, settings: set, diff --git a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go index 1c7fe9cafe7..794cfdbbfd2 100644 --- a/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go +++ b/cmd/jaeger/internal/integration/receivers/storagereceiver/receiver_test.go @@ -76,7 +76,7 @@ func withReceiver( cfg.PullInterval = r.receiveInterval receiver, _ := newTracesReceiver( cfg, - receivertest.NewNopCreateSettings(), + receivertest.NewNopSettings(), consumertest.NewNop(), ) receiver.settings.ReportStatus = func(_ *component.StatusEvent) {} diff --git a/cmd/jaeger/internal/integration/span_writer.go b/cmd/jaeger/internal/integration/span_writer.go index 60c817cdf0e..509ba1dcbd3 100644 --- a/cmd/jaeger/internal/integration/span_writer.go +++ b/cmd/jaeger/internal/integration/span_writer.go @@ -45,7 +45,7 @@ func createSpanWriter(logger *zap.Logger, port int) (*spanWriter, error) { Insecure: true, } - set := exportertest.NewNopCreateSettings() + set := exportertest.NewNopSettings() set.Logger = logger exporter, err := factory.CreateTracesExporter(context.Background(), set, cfg) diff --git a/cmd/jaeger/internal/integration/storagecleaner/factory.go b/cmd/jaeger/internal/integration/storagecleaner/factory.go index 66ab01324ff..ee6fd4d40a1 100644 --- a/cmd/jaeger/internal/integration/storagecleaner/factory.go +++ b/cmd/jaeger/internal/integration/storagecleaner/factory.go @@ -33,7 +33,7 @@ func createDefaultConfig() component.Config { func createExtension( _ context.Context, - set extension.CreateSettings, + set extension.Settings, cfg component.Config, ) (extension.Extension, error) { return newStorageCleaner(cfg.(*Config), set.TelemetrySettings), nil diff --git a/cmd/jaeger/internal/integration/storagecleaner/factory_test.go b/cmd/jaeger/internal/integration/storagecleaner/factory_test.go index 7b1ec51d8f3..85d7a4585b9 100644 --- a/cmd/jaeger/internal/integration/storagecleaner/factory_test.go +++ b/cmd/jaeger/internal/integration/storagecleaner/factory_test.go @@ -22,7 +22,7 @@ func TestCreateDefaultConfig(t *testing.T) { func TestCreateExtension(t *testing.T) { cfg := createDefaultConfig().(*Config) f := NewFactory() - r, err := f.CreateExtension(context.Background(), extensiontest.NewNopCreateSettings(), cfg) + r, err := f.CreateExtension(context.Background(), extensiontest.NewNopSettings(), cfg) require.NoError(t, err) assert.NotNil(t, r) } diff --git a/docker-compose/monitor/Makefile b/docker-compose/monitor/Makefile index caa2934fc1f..1d325829f4a 100644 --- a/docker-compose/monitor/Makefile +++ b/docker-compose/monitor/Makefile @@ -1,9 +1,14 @@ .PHONY: build -build: export DOCKER_TAG = dev build: clean-jaeger - cd ../../ && \ - make build-all-in-one-linux && \ - make docker-images-jaeger-backend + cd ../../ && make build-all-in-one-linux + cd ../../ && make create-baseimg PLATFORMS=linux/$(shell go env GOARCH) + cd ../../ && docker buildx build --target release \ + --tag jaegertracing/all-in-one:dev \ + --build-arg base_image=localhost:5000/baseimg_alpine:latest \ + --build-arg debug_image=not-used \ + --build-arg TARGETARCH=$(shell go env GOARCH) \ + --load \ + cmd/all-in-one # starts up the system required for SPM using the latest otel image and a development jaeger image. # Note: the jaeger "dev" image can be built with "make build". diff --git a/docker/Makefile b/docker/Makefile index dfb72662a7d..3edf6d8803e 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -17,6 +17,11 @@ create-debugimg: prepare-docker-buildx --platform=$(PLATFORMS) \ docker/debug +create-fake-debugimg: prepare-docker-buildx + docker buildx build -t $(DEBUG_IMAGE) --push \ + --platform=$(PLATFORMS) \ + docker/base + .PHONY: prepare-docker-buildx prepare-docker-buildx: docker buildx inspect jaeger-build > /dev/null || docker buildx create --use --name=jaeger-build --buildkitd-flags="--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host" --driver-opt="network=host" diff --git a/go.mod b/go.mod index 7e03add9298..74e3bbf2a58 100644 --- a/go.mod +++ b/go.mod @@ -39,34 +39,34 @@ require ( github.com/stretchr/testify v1.9.0 github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/xdg-go/scram v1.1.2 - go.opentelemetry.io/collector/component v0.102.1 - go.opentelemetry.io/collector/config/configgrpc v0.102.1 - go.opentelemetry.io/collector/config/confighttp v0.102.1 - go.opentelemetry.io/collector/config/configretry v0.102.1 - go.opentelemetry.io/collector/config/configtls v0.102.1 - go.opentelemetry.io/collector/confmap v0.102.1 - go.opentelemetry.io/collector/confmap/converter/expandconverter v0.102.1 - go.opentelemetry.io/collector/confmap/provider/envprovider v0.102.1 - go.opentelemetry.io/collector/confmap/provider/fileprovider v0.102.1 - go.opentelemetry.io/collector/confmap/provider/httpprovider v0.102.1 - go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.102.1 - go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.102.1 - go.opentelemetry.io/collector/connector v0.102.1 - go.opentelemetry.io/collector/connector/forwardconnector v0.102.1 - go.opentelemetry.io/collector/consumer v0.102.1 - go.opentelemetry.io/collector/exporter v0.102.1 - go.opentelemetry.io/collector/exporter/otlpexporter v0.102.1 - go.opentelemetry.io/collector/exporter/otlphttpexporter v0.102.1 - go.opentelemetry.io/collector/extension v0.102.1 - go.opentelemetry.io/collector/extension/ballastextension v0.102.1 - go.opentelemetry.io/collector/extension/zpagesextension v0.102.1 - go.opentelemetry.io/collector/otelcol v0.102.1 - go.opentelemetry.io/collector/pdata v1.9.0 - go.opentelemetry.io/collector/processor v0.102.1 - go.opentelemetry.io/collector/processor/batchprocessor v0.102.1 - go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.102.1 - go.opentelemetry.io/collector/receiver v0.102.1 - go.opentelemetry.io/collector/receiver/otlpreceiver v0.102.1 + go.opentelemetry.io/collector/component v0.103.0 + go.opentelemetry.io/collector/config/configgrpc v0.103.0 + go.opentelemetry.io/collector/config/confighttp v0.103.0 + go.opentelemetry.io/collector/config/configretry v0.103.0 + go.opentelemetry.io/collector/config/configtls v0.103.0 + go.opentelemetry.io/collector/confmap v0.103.0 + go.opentelemetry.io/collector/confmap/converter/expandconverter v0.103.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v0.103.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v0.103.0 + go.opentelemetry.io/collector/confmap/provider/httpprovider v0.103.0 + go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.103.0 + go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.103.0 + go.opentelemetry.io/collector/connector v0.103.0 + go.opentelemetry.io/collector/connector/forwardconnector v0.103.0 + go.opentelemetry.io/collector/consumer v0.103.0 + go.opentelemetry.io/collector/exporter v0.103.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.103.0 + go.opentelemetry.io/collector/exporter/otlphttpexporter v0.103.0 + go.opentelemetry.io/collector/extension v0.103.0 + go.opentelemetry.io/collector/extension/ballastextension v0.103.0 + go.opentelemetry.io/collector/extension/zpagesextension v0.103.0 + go.opentelemetry.io/collector/otelcol v0.103.0 + go.opentelemetry.io/collector/pdata v1.10.0 + go.opentelemetry.io/collector/processor v0.103.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.103.0 + go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.103.0 + go.opentelemetry.io/collector/receiver v0.103.0 + go.opentelemetry.io/collector/receiver/otlpreceiver v0.103.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 go.opentelemetry.io/otel v1.27.0 @@ -169,7 +169,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/shirou/gopsutil/v3 v3.24.4 // indirect + github.com/shirou/gopsutil/v4 v4.24.5 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect @@ -184,18 +184,18 @@ require ( github.com/xdg-go/stringprep v1.0.4 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector v0.102.1 // indirect - go.opentelemetry.io/collector/config/configauth v0.102.1 - go.opentelemetry.io/collector/config/configcompression v1.9.0 // indirect - go.opentelemetry.io/collector/config/confignet v0.102.1 // indirect - go.opentelemetry.io/collector/config/configopaque v1.9.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.102.1 // indirect - go.opentelemetry.io/collector/config/internal v0.102.1 // indirect - go.opentelemetry.io/collector/exporter/debugexporter v0.102.1 - go.opentelemetry.io/collector/extension/auth v0.102.1 // indirect - go.opentelemetry.io/collector/featuregate v1.9.0 // indirect - go.opentelemetry.io/collector/semconv v0.102.1 // indirect - go.opentelemetry.io/collector/service v0.102.1 // indirect + go.opentelemetry.io/collector v0.103.0 // indirect + go.opentelemetry.io/collector/config/configauth v0.103.0 + go.opentelemetry.io/collector/config/configcompression v1.10.0 // indirect + go.opentelemetry.io/collector/config/confignet v0.103.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.10.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.103.0 // indirect + go.opentelemetry.io/collector/config/internal v0.103.0 // indirect + go.opentelemetry.io/collector/exporter/debugexporter v0.103.0 + go.opentelemetry.io/collector/extension/auth v0.103.0 // indirect + go.opentelemetry.io/collector/featuregate v1.10.0 // indirect + go.opentelemetry.io/collector/semconv v0.103.0 // indirect + go.opentelemetry.io/collector/service v0.103.0 // indirect go.opentelemetry.io/contrib/config v0.7.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.27.0 // indirect go.opentelemetry.io/contrib/zpages v0.52.0 // indirect diff --git a/go.sum b/go.sum index cc26e8b0a59..1790f627cfb 100644 --- a/go.sum +++ b/go.sum @@ -130,7 +130,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -216,7 +215,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8LbfQI7cA4= github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -298,7 +296,6 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI= github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= @@ -329,8 +326,8 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/shirou/gopsutil/v3 v3.24.4 h1:dEHgzZXt4LMNm+oYELpzl9YCqV65Yr/6SfrvgRBtXeU= -github.com/shirou/gopsutil/v3 v3.24.4/go.mod h1:lTd2mdiOspcqLgAnr9/nGi71NkeMpWKdmhuxm9GusH8= +github.com/shirou/gopsutil/v4 v4.24.5 h1:gGsArG5K6vmsh5hcFOHaPm87UD003CaDMkAOweSQjhM= +github.com/shirou/gopsutil/v4 v4.24.5/go.mod h1:aoebb2vxetJ/yIDZISmduFvVNPHqXQ9SEJwRXxkf0RA= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= @@ -396,88 +393,88 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector v0.102.1 h1:M/ciCcReQsSDYG9bJ2Qwqk7pQILDJ2bM/l0MdeCAvJE= -go.opentelemetry.io/collector v0.102.1/go.mod h1:yF1lDRgL/Eksb4/LUnkMjvLvHHpi6wqBVlzp+dACnPM= -go.opentelemetry.io/collector/component v0.102.1 h1:66z+LN5dVCXhvuVKD1b56/3cYLK+mtYSLIwlskYA9IQ= -go.opentelemetry.io/collector/component v0.102.1/go.mod h1:XfkiSeImKYaewT2DavA80l0VZ3JjvGndZ8ayPXfp8d0= -go.opentelemetry.io/collector/config/configauth v0.102.1 h1:LuzijaZulMu4xmAUG8WA00ZKDlampH+ERjxclb40Q9g= -go.opentelemetry.io/collector/config/configauth v0.102.1/go.mod h1:kTzfI5fnbMJpm2wycVtQeWxFAtb7ns4HksSb66NIhX8= -go.opentelemetry.io/collector/config/configcompression v1.9.0 h1:B2q6XMO6xiF2s+14XjqAQHGY5UefR+PtkZ0WAlmSqpU= -go.opentelemetry.io/collector/config/configcompression v1.9.0/go.mod h1:6+m0GKCv7JKzaumn7u80A2dLNCuYf5wdR87HWreoBO0= -go.opentelemetry.io/collector/config/configgrpc v0.102.1 h1:6Plnfx+xw/JH8k11MkljGoysPfn1u7hHbO2evteOTeE= -go.opentelemetry.io/collector/config/configgrpc v0.102.1/go.mod h1:Kk3XOSar3QTzGDS8N8M38DVlOzUD7STS2obczO9q43I= -go.opentelemetry.io/collector/config/confighttp v0.102.1 h1:tPw1Xf2PfDdrXoBKLY5Sd4Dh8FNm5i+6DKuky9XraIM= -go.opentelemetry.io/collector/config/confighttp v0.102.1/go.mod h1:k4qscfjxuaDQmcAzioxmPujui9VSgW6oal3WLxp9CzI= -go.opentelemetry.io/collector/config/confignet v0.102.1 h1:nSiAFQMzNCO4sDBztUxY73qFw4Vh0hVePq8+3wXUHtU= -go.opentelemetry.io/collector/config/confignet v0.102.1/go.mod h1:pfOrCTfSZEB6H2rKtx41/3RN4dKs+X2EKQbw3MGRh0E= -go.opentelemetry.io/collector/config/configopaque v1.9.0 h1:jocenLdK/rVG9UoGlnpiBxXLXgH5NhIXCrVSTyKVYuA= -go.opentelemetry.io/collector/config/configopaque v1.9.0/go.mod h1:8v1yaH4iYjcigbbyEaP/tzVXeFm4AaAsKBF9SBeqaG4= -go.opentelemetry.io/collector/config/configretry v0.102.1 h1:J5/tXBL8P7d7HT5dxsp2H+//SkwDXR66Z9UTgRgtAzk= -go.opentelemetry.io/collector/config/configretry v0.102.1/go.mod h1:P+RA0IA+QoxnDn4072uyeAk1RIoYiCbxYsjpKX5eFC4= -go.opentelemetry.io/collector/config/configtelemetry v0.102.1 h1:f/CYcrOkaHd+COIJ2lWnEgBCHfhEycpbow4ZhrGwAlA= -go.opentelemetry.io/collector/config/configtelemetry v0.102.1/go.mod h1:WxWKNVAQJg/Io1nA3xLgn/DWLE/W1QOB2+/Js3ACi40= -go.opentelemetry.io/collector/config/configtls v0.102.1 h1:7fr+PU9BRg0HRc1Pn3WmDW/4WBHRjuo7o1CdG2vQKoA= -go.opentelemetry.io/collector/config/configtls v0.102.1/go.mod h1:KHdrvo3cwosgDxclyiLWmtbovIwqvaIGeTXr3p5721A= -go.opentelemetry.io/collector/config/internal v0.102.1 h1:HFsFD3xpHUuNHb8/UTz5crJw1cMHzsJQf/86sgD44hw= -go.opentelemetry.io/collector/config/internal v0.102.1/go.mod h1:Vig3dfeJJnuRe1kBNpszBzPoj5eYnR51wXbeq36Zfpg= -go.opentelemetry.io/collector/confmap v0.102.1 h1:wZuH+d/P11Suz8wbp+xQCJ0BPE9m5pybtUe74c+rU7E= -go.opentelemetry.io/collector/confmap v0.102.1/go.mod h1:KgpS7UxH5rkd69CzAzlY2I1heH8Z7eNCZlHmwQBMxNg= -go.opentelemetry.io/collector/confmap/converter/expandconverter v0.102.1 h1:s0RxnaABoRxtfvUeimZ0OOsF83wD/EK1tR2N5GZyst0= -go.opentelemetry.io/collector/confmap/converter/expandconverter v0.102.1/go.mod h1:ZwSMlOSIzmrrSSVNoMPDr21SQx7E52bZFMQJSOZ+EhY= -go.opentelemetry.io/collector/confmap/provider/envprovider v0.102.1 h1:4KLw0pTChIqDfw0ckZ411aQDw98pu2dDOqgBHXfJm8M= -go.opentelemetry.io/collector/confmap/provider/envprovider v0.102.1/go.mod h1:f+IJBW0Sc96T79qj3GQtE1wQ0uWEwpslD785efKBl+c= -go.opentelemetry.io/collector/confmap/provider/fileprovider v0.102.1 h1:nPhOtUbJHfTDqZqtvU76HmEz9iV4O/4/DSCZdnm0mpY= -go.opentelemetry.io/collector/confmap/provider/fileprovider v0.102.1/go.mod h1:eJnr6YDQiocmoRBvsKj33bIc4wysq5hy/jmOApv1dSM= -go.opentelemetry.io/collector/confmap/provider/httpprovider v0.102.1 h1:VsaGXqEUFost0mf2svhds6loYzPavkyY37nMQcqoTkc= -go.opentelemetry.io/collector/confmap/provider/httpprovider v0.102.1/go.mod h1:lQocxKI32Zj1F3PR9UZfzykq50/mOI1mbyZ0729dphI= -go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.102.1 h1:rEhPTqkGAezaFxJ8y/BL5m4vKTK3ZSpn+VcVLKnZo7Q= -go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.102.1/go.mod h1:GxUZM23m3u4vURw/At2zEKW+5GwcuCNsHJNT/Wq/cFI= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.102.1 h1:qmdaBIz0UnUKVitZzq+4HtO9zvRTwgNc/Q3b7kyf1NQ= -go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.102.1/go.mod h1:nAckG/FkzAaPuwtEN2Na2+ij+2hdTjtXUtFBnlUqpFk= -go.opentelemetry.io/collector/connector v0.102.1 h1:7lEwXmhzqtyZwz2bBUHzwV/CZqA8bhPPVJOi0cm9+Fk= -go.opentelemetry.io/collector/connector v0.102.1/go.mod h1:DRlDYJXsFx1FKKxkdM2Ja52/xe+0bgmy0hA+wgKRUVI= -go.opentelemetry.io/collector/connector/forwardconnector v0.102.1 h1:XlpnR4NZcWEX0Qd+FJXKN41WQVDxgBNviGe/8WcRwtg= -go.opentelemetry.io/collector/connector/forwardconnector v0.102.1/go.mod h1:fe6t7IiPubPjHaY/HxSBWJlGKwPbtMe3DyArb1xtBZE= -go.opentelemetry.io/collector/consumer v0.102.1 h1:0CkgHhxwx4lI/m+hWjh607xyjooW5CObZ8hFQy5vvo0= -go.opentelemetry.io/collector/consumer v0.102.1/go.mod h1:HoXqmrRV13jLnP3/Gg3fYNdRkDPoO7UW58hKiLyFF60= -go.opentelemetry.io/collector/exporter v0.102.1 h1:4VURYgBNJscxfMhZWitzcwA1cig5a6pH0xZSpdECDnM= -go.opentelemetry.io/collector/exporter v0.102.1/go.mod h1:1pmNxvrvvbWDW6PiGObICdj0eOSGV4Fzwpm5QA1GU54= -go.opentelemetry.io/collector/exporter/debugexporter v0.102.1 h1:eATGZwBNmqUn8xRr7oGQhoegjeOOCdmtbYgziUoFMf8= -go.opentelemetry.io/collector/exporter/debugexporter v0.102.1/go.mod h1:k5rDZX5pV3DsXZzvI+sk7PKMUljtB7T25PPXAPGBjEs= -go.opentelemetry.io/collector/exporter/otlpexporter v0.102.1 h1:bOXE7u1iy0SKwH2mnVyIMKkvFIR9bn9iIm1Cf/CJlZU= -go.opentelemetry.io/collector/exporter/otlpexporter v0.102.1/go.mod h1:4ya6xaUYvcXq9MQW0TbsR4QWkOJI02d/2Vt8plwdozA= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.102.1 h1:9TaxHrkVtEdssDAHqV5yU9PARkFph7CvfLqC1wS6m+c= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.102.1/go.mod h1:auKlkLfuUriyZ2CmV2dudJaVGB7ycZ+tTpypy2JNFEc= -go.opentelemetry.io/collector/extension v0.102.1 h1:gAvE3w15q+Vv0Tj100jzcDpeMTyc8dAiemHRtJbspLg= -go.opentelemetry.io/collector/extension v0.102.1/go.mod h1:XBxUOXjZpwYLZYOK5u3GWlbBTOKmzStY5eU1R/aXkIo= -go.opentelemetry.io/collector/extension/auth v0.102.1 h1:GP6oBmpFJjxuVruPb9X40bdf6PNu9779i8anxa+wW6U= -go.opentelemetry.io/collector/extension/auth v0.102.1/go.mod h1:U2JWz8AW1QXX2Ap3ofzo5Dn2fZU/Lglld97Vbh8BZS0= -go.opentelemetry.io/collector/extension/ballastextension v0.102.1 h1:mrGwVheXTgnxdkWC9BXOO2Zk4oIO4mpfN5zzLI40bX4= -go.opentelemetry.io/collector/extension/ballastextension v0.102.1/go.mod h1:UzWHLmeNg5wPTeUjgNE92JEJhSWX5S+1P0NCpyijPDA= -go.opentelemetry.io/collector/extension/zpagesextension v0.102.1 h1:YV+ejCgOBJjACOi/l3ULeivOhh85FPE8T4UcFdWviyg= -go.opentelemetry.io/collector/extension/zpagesextension v0.102.1/go.mod h1:/CZXg9/C64k85/k4bc7NFbCNP/MiPUZucbxPUN04ny4= -go.opentelemetry.io/collector/featuregate v1.9.0 h1:mC4/HnR5cx/kkG1RKOQAvHxxg5Ktmd9gpFdttPEXQtA= -go.opentelemetry.io/collector/featuregate v1.9.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= -go.opentelemetry.io/collector/otelcol v0.102.1 h1:JdRG3ven+c5k703QpZG5bxJi4JJOnWaNP/EJvN+oYnI= -go.opentelemetry.io/collector/otelcol v0.102.1/go.mod h1:kHf9KBXOLZXajR1On8XJbBBGcgh2I2+/mVVroPzOLJU= -go.opentelemetry.io/collector/pdata v1.9.0 h1:qyXe3HEVYYxerIYu0rzgo1Tx2d1Zs6iF+TCckbHLFOw= -go.opentelemetry.io/collector/pdata v1.9.0/go.mod h1:vk7LrfpyVpGZrRWcpjyy0DDZzL3SZiYMQxfap25551w= -go.opentelemetry.io/collector/pdata/testdata v0.102.1 h1:S3idZaJxy8M7mCC4PG4EegmtiSaOuh6wXWatKIui8xU= -go.opentelemetry.io/collector/pdata/testdata v0.102.1/go.mod h1:JEoSJTMgeTKyGxoMRy48RMYyhkA5vCCq/abJq9B6vXs= -go.opentelemetry.io/collector/processor v0.102.1 h1:79NWs7kTgmgxOIQacuZyDf+mYWuoJZS07SHwZT7sZ4Y= -go.opentelemetry.io/collector/processor v0.102.1/go.mod h1:sNM41tEHgv3YA/Dz9/6F8oCeObrqnKCGOMs7wS6Ldus= -go.opentelemetry.io/collector/processor/batchprocessor v0.102.1 h1:s7TjD8k2d58x/Oj6P6PIm6R4zyBRdUPNbD9Zhiv0x0E= -go.opentelemetry.io/collector/processor/batchprocessor v0.102.1/go.mod h1:RDgJIY8J6xstSncSDzvzkOSFoNGK8RqeuHfdoWxu6a8= -go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.102.1 h1:aUDHYAMJFQR/NRTqerzJjHk4bbDLwReQnMQmMMyuYLo= -go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.102.1/go.mod h1:u4QM5ntLlV+XIl0w5zEYa3qmjukGhtmjgqzrdG8QGus= -go.opentelemetry.io/collector/receiver v0.102.1 h1:353t4U3o0RdU007JcQ4sRRzl72GHCJZwXDr8cCOcEbI= -go.opentelemetry.io/collector/receiver v0.102.1/go.mod h1:pYjMzUkvUlxJ8xt+VbI1to8HMtVlv8AW/K/2GQQOTB0= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.102.1 h1:65/8lkVmOu6gwBw99W+QUQBeDC2qVTwlaiqy7/SpauY= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.102.1/go.mod h1:0hmxfFSSqKJjRGvgYjp/XvptbAgLhLguwNgJqMp7zd0= -go.opentelemetry.io/collector/semconv v0.102.1 h1:zLhz2Gu//j7HHESFTGTrfKIaoS4r+lZFQDnGCOThggo= -go.opentelemetry.io/collector/semconv v0.102.1/go.mod h1:yMVUCNoQPZVq/IPfrHrnntZTWsLf5YGZ7qwKulIl5hw= -go.opentelemetry.io/collector/service v0.102.1 h1:Lg7qrC4Zctd/OAlkpdsaZaUY+jLEGLLnOigfBLP2GW8= -go.opentelemetry.io/collector/service v0.102.1/go.mod h1:L5Sh3461B1Zij7vpMMbi6M/SZicgrLB3UgbG0oUK0pA= +go.opentelemetry.io/collector v0.103.0 h1:mssWo1y31p1F/SRsSBnVUX6YocgawCqM1blpE+hkWog= +go.opentelemetry.io/collector v0.103.0/go.mod h1:mgqdTFB7QCYiOeEdJSSEktovPqy+2fw4oTKJzyeSB0U= +go.opentelemetry.io/collector/component v0.103.0 h1:j52YAsp8EmqYUotVUwhovkqFZGuxArEkk65V4TI46NE= +go.opentelemetry.io/collector/component v0.103.0/go.mod h1:jKs19tGtCO8Hr5/YM0F+PoFcl8SVe/p4Ge30R6srkbc= +go.opentelemetry.io/collector/config/configauth v0.103.0 h1:tv2Ilj0X9T8ZsDd4mB8Sl+nXQ8CG8MJVQ1Lo4mmE0Pk= +go.opentelemetry.io/collector/config/configauth v0.103.0/go.mod h1:VIo8DpFeyOOCMUVoQsBdq3t2snUiBBECP0UxW1bwz/o= +go.opentelemetry.io/collector/config/configcompression v1.10.0 h1:ClkAY1rzaxFawmC53BUf3TjTWKOGx+2xnpqOJIkg6Tk= +go.opentelemetry.io/collector/config/configcompression v1.10.0/go.mod h1:6+m0GKCv7JKzaumn7u80A2dLNCuYf5wdR87HWreoBO0= +go.opentelemetry.io/collector/config/configgrpc v0.103.0 h1:H1TXxUwxaZINmAzuehP/8ExKhJKzuw/oBGc7juzwloo= +go.opentelemetry.io/collector/config/configgrpc v0.103.0/go.mod h1:1FG873Wpw9AWANjXBvOd59noWY3dZoU6WkMWLJDx5FQ= +go.opentelemetry.io/collector/config/confighttp v0.103.0 h1:tgCWMKuIorSr4+iQOv0A8Ya/8do73hiG5KHinWaz63Q= +go.opentelemetry.io/collector/config/confighttp v0.103.0/go.mod h1:xMXoLsTGTJlftu+VAL3iadEs4gkmqFrvuPPnpNi6ETo= +go.opentelemetry.io/collector/config/confignet v0.103.0 h1:A2/8y2oEFaJbmtl+r1JIP0y+281vmmcPp0P51xcSn5s= +go.opentelemetry.io/collector/config/confignet v0.103.0/go.mod h1:pfOrCTfSZEB6H2rKtx41/3RN4dKs+X2EKQbw3MGRh0E= +go.opentelemetry.io/collector/config/configopaque v1.10.0 h1:FAxj6ggLpJE/kFnR1ezYwjRdo6gHo2+CjlIsHVCFVnQ= +go.opentelemetry.io/collector/config/configopaque v1.10.0/go.mod h1:0xURn2sOy5j4fbaocpEYfM97HPGsiffkkVudSPyTJlM= +go.opentelemetry.io/collector/config/configretry v0.103.0 h1:AwWGdeYJvUCZfh127Jb8uj7kuoPrJ3t2iZGwQUxmb7c= +go.opentelemetry.io/collector/config/configretry v0.103.0/go.mod h1:P+RA0IA+QoxnDn4072uyeAk1RIoYiCbxYsjpKX5eFC4= +go.opentelemetry.io/collector/config/configtelemetry v0.103.0 h1:KLbhkFqdw9D31t0IhJ/rnhMRvz/s14eie0fKfm5xWns= +go.opentelemetry.io/collector/config/configtelemetry v0.103.0/go.mod h1:WxWKNVAQJg/Io1nA3xLgn/DWLE/W1QOB2+/Js3ACi40= +go.opentelemetry.io/collector/config/configtls v0.103.0 h1:nbk8sJIHoYYQbpZtUkUQceTbjC4wEjoePKJ15v8cCcU= +go.opentelemetry.io/collector/config/configtls v0.103.0/go.mod h1:046dfdfHW8wWCMhzUaWJo7guRiCoSz5QzVjCSDzymdU= +go.opentelemetry.io/collector/config/internal v0.103.0 h1:pimS3uLHfOBbConZrviGoTwu+bkTNDoQBtbeWCg8U8k= +go.opentelemetry.io/collector/config/internal v0.103.0/go.mod h1:kJRkB+PgamWqPi/GWbYWvnRzVzS1rwDUh6+VSz4C7NQ= +go.opentelemetry.io/collector/confmap v0.103.0 h1:qKKZyWzropSKfgtGv12JzADOXNgThqH1Vx6qzblBE24= +go.opentelemetry.io/collector/confmap v0.103.0/go.mod h1:TlOmqe/Km3K6WgxyhEAdCb/V1Yp6eSU76fCoiluEa88= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.103.0 h1:zApcKLSosuu9I/4IRHTqlE1H6XNiZNAgd26YbzHwkto= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.103.0/go.mod h1:hoel+3CPjRhPSHzCrE1E+wCyoSLHlgW7662Ntwx2ujM= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.103.0 h1:0XHQ/ffxSUx3sMbnYSf8a4jnVYLUrxo+/XwdhXkizgs= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.103.0/go.mod h1:NiE4Fe42Sew1TyXuU1YEd0xZBDNI+w6IRkC2OTlJUak= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.103.0 h1:5dB2G7d6RKmWS8ptuAWvAEKGYODk2DTRm84bU9HooLQ= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.103.0/go.mod h1:GT/GBk17lDhc27762w6PNHvKYbA+TnHvNEyQHUsjKpY= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.103.0 h1:Hrp+nw4W9/jeJfi3GfJW6EYh7DeNkaC1wojOh4x8CbI= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.103.0/go.mod h1:kUst0pGVBlKDSlvJYDclrsApbkMv7ahRDh6/pE4LsBc= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.103.0 h1:JUDRYsMOhkIBxZqZli0BU+64zahIUgnEPZSe9wo2T0Q= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.103.0/go.mod h1:+mUrWjpdGIdSKMeeplLO+qXFSBc287as2oIPVdKMTxc= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.103.0 h1:boTv+ZRkn1h5eUbt5sLSU5lCrItCCxCen/laRmsHLyg= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.103.0/go.mod h1:0pZ7RD7SPg+yklgGPN+74Zzbps4R9x5bRPZX1D1gtGM= +go.opentelemetry.io/collector/connector v0.103.0 h1:jwmrgCT6ftz3U4o8mAqP+/yaQ5KsLMFXo2+OHXhy+tE= +go.opentelemetry.io/collector/connector v0.103.0/go.mod h1:6RDaeDMiXTKEXSy1eIaO0EiM+/91NVHdBxOc9e2++2A= +go.opentelemetry.io/collector/connector/forwardconnector v0.103.0 h1:r4+BxddgTpkvFXEDsh9jL5Qg+wqlkwgHwDUfYux8QTM= +go.opentelemetry.io/collector/connector/forwardconnector v0.103.0/go.mod h1:1dp/eyK6GtdUlSeYQseJGdb9KyprDfBQbBRTOzYuGY8= +go.opentelemetry.io/collector/consumer v0.103.0 h1:L/7SA/U2ua5L4yTLChnI9I+IFGKYU5ufNQ76QKYcPYs= +go.opentelemetry.io/collector/consumer v0.103.0/go.mod h1:7jdYb9kSSOsu2R618VRX0VJ+Jt3OrDvvUsDToHTEOLI= +go.opentelemetry.io/collector/exporter v0.103.0 h1:g0nF/FAwuA7tTJf5uo1PvlQl7xFqCgvfH+FYqufBSiw= +go.opentelemetry.io/collector/exporter v0.103.0/go.mod h1:PC2OvciPEew2kaA/ZMyxRqfeOW8Wgi0CYR614PEyS/w= +go.opentelemetry.io/collector/exporter/debugexporter v0.103.0 h1:jwZHoXvp3vdQ3obtnU+Vav5ChTCUBSC6mvlOZJ8doCU= +go.opentelemetry.io/collector/exporter/debugexporter v0.103.0/go.mod h1:kzmBnKxsLNVBRGS8nwu497SvHspzyeiV06+LiPHktto= +go.opentelemetry.io/collector/exporter/otlpexporter v0.103.0 h1:YKdYP3tDOQC6sOdOD1/Sun6CA4Zwpky+aRve3dx5QcE= +go.opentelemetry.io/collector/exporter/otlpexporter v0.103.0/go.mod h1:4UVHkqgL80CRVrbD85p2k4swDe27gLyQkoKlSYOkR0A= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.103.0 h1:26jP07GOjipKnFAKw0hDnCTB67tXZzHN+uxii3mnbjw= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.103.0/go.mod h1:qJGL48tf0CamMLUjO+HtxDeDZ+4pvvxxF1GDqE5VHnc= +go.opentelemetry.io/collector/extension v0.103.0 h1:vTsd+GElvT7qKk9Y9d6UKuuT2Ngx0mai8Q48hkKQMwM= +go.opentelemetry.io/collector/extension v0.103.0/go.mod h1:rp2l3xskNKWv0yBCyU69Pv34TnP1QVD1ijr0zSndnsM= +go.opentelemetry.io/collector/extension/auth v0.103.0 h1:i7cQl+Ewpve/DIN4rFMg1GiyUPE14LZsYWrJ1RqtP84= +go.opentelemetry.io/collector/extension/auth v0.103.0/go.mod h1:JdYBS/EkPAz2APAi8g7xTiSRlZTc7c4H82AQM9epzxw= +go.opentelemetry.io/collector/extension/ballastextension v0.103.0 h1:U8f6b6xnkD04HNIOgqLAWXfCcezSAU2vMq5SMtKjjbo= +go.opentelemetry.io/collector/extension/ballastextension v0.103.0/go.mod h1:/B3xE2YhUgGXSsFH8Qg0kq4WpfkuTyWDJGNyfRgMax8= +go.opentelemetry.io/collector/extension/zpagesextension v0.103.0 h1:jgSEQY++zOI6hFQygwuvS6ulJ/Yu4xXgUg+Ijoxx51I= +go.opentelemetry.io/collector/extension/zpagesextension v0.103.0/go.mod h1:2OUi0Hp+3zPUJmi7goJ6d1/kGgFAw3SDESRX7xQ0QHE= +go.opentelemetry.io/collector/featuregate v1.10.0 h1:krSqokHTp7JthgmtewysqHuOAkcuuZl7G2n91s7HygE= +go.opentelemetry.io/collector/featuregate v1.10.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= +go.opentelemetry.io/collector/otelcol v0.103.0 h1:Skqnc2mxDdk3eiYioUuG7ST6ur5k83SOv7mIBt60fBw= +go.opentelemetry.io/collector/otelcol v0.103.0/go.mod h1:iJF3ghCv+nRZI6+hI7z3kGRZrgH///Fd9tNXY82X90g= +go.opentelemetry.io/collector/pdata v1.10.0 h1:oLyPLGvPTQrcRT64ZVruwvmH/u3SHTfNo01pteS4WOE= +go.opentelemetry.io/collector/pdata v1.10.0/go.mod h1:IHxHsp+Jq/xfjORQMDJjSH6jvedOSTOyu3nbxqhWSYE= +go.opentelemetry.io/collector/pdata/testdata v0.103.0 h1:iI6NOE0L2je/bxlWzAWHQ/yCtnGupgv42Hl9Al1q/g4= +go.opentelemetry.io/collector/pdata/testdata v0.103.0/go.mod h1:tLzRhb/h37/9wFRQVr+CxjKi5qmhSRpCAiOlhwRkeEk= +go.opentelemetry.io/collector/processor v0.103.0 h1:YZ+LRuHKtOam7SCeLkJAP6bS1d6XxeYP22OyMN3VP0s= +go.opentelemetry.io/collector/processor v0.103.0/go.mod h1:/mxyh0NpJgpZycm7iHDpM7i5PdtWvKKdCZf0cyADJfU= +go.opentelemetry.io/collector/processor/batchprocessor v0.103.0 h1:vunxXGq5Pzcawj4QbXKrIOoXLHpPbRbwNBFPR80X0R4= +go.opentelemetry.io/collector/processor/batchprocessor v0.103.0/go.mod h1:c5nh1LHVlBFQajCnm/5hwKqAvOLpTTOd2GQyB7lT75E= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.103.0 h1:ZwPULpXaIOmY/Niaia2aNyKc40KZE9jorhN+zm6zijw= +go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.103.0/go.mod h1:BvAZflYYV3/FoHjVDKYfeyx5/bIqJDaeAaf/JtDmc8w= +go.opentelemetry.io/collector/receiver v0.103.0 h1:V3JBKkX+7e/NYpDDZVyeu2VQB1/lLFuoJFPfupdCcZs= +go.opentelemetry.io/collector/receiver v0.103.0/go.mod h1:Yybv4ynKFdMOYViWWPMmjkugR89FSQN0P37wP6mX6qM= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.103.0 h1:TycVVl4AWioV6kWeFcCIk2QuKfXOzn88yw989opsMdE= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.103.0/go.mod h1:jAbzL5lwOGG93YbcPZ6aFZIZq+tjYQ+BS3vKKT2nRgw= +go.opentelemetry.io/collector/semconv v0.103.0 h1:5tlVoZlo9USHAU2Bz4YrEste0Vm5AMufXkYJhAVve1Q= +go.opentelemetry.io/collector/semconv v0.103.0/go.mod h1:yMVUCNoQPZVq/IPfrHrnntZTWsLf5YGZ7qwKulIl5hw= +go.opentelemetry.io/collector/service v0.103.0 h1:e4Eri4jo+YOuEK0+/JE9SUdT/NZaJ2jz/ROJlmLn96s= +go.opentelemetry.io/collector/service v0.103.0/go.mod h1:p1mlniiC1MuPN5FANYJYgf5V5CGFP0hNqWfI8t7Aw8M= go.opentelemetry.io/contrib/config v0.7.0 h1:b1rK5tGTuhhPirJiMxOcyQfZs76j2VapY6ODn3b2Dbs= go.opentelemetry.io/contrib/config v0.7.0/go.mod h1:8tdiFd8N5etOi3XzBmAoMxplEzI3TcL8dU5rM5/xcOQ= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= @@ -613,7 +610,6 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/renovate.json b/renovate.json index 8f7c99b63b9..b8f9de92677 100644 --- a/renovate.json +++ b/renovate.json @@ -24,6 +24,40 @@ ], "matchUpdateTypes": ["major", "patch"], "enabled": false + }, + { + "matchManagers": ["github-actions"], + "groupName": "github-actions deps" + }, + { + "matchManagers": ["gomod"], + "matchSourceUrlPrefixes": [ + "go.opentelemetry.io/otel", + "github.com/open-telemetry/opentelemetry-go-contrib" + ], + "groupName": "All OTEL SDK + contrib packages" + }, + { + "matchManagers": ["gomod"], + "matchPackagePrefixes": ["go.opentelemetry.io/collector"], + "groupName": "All OTEL Collector packages" + }, + { + "matchManagers": ["gomod"], + "matchPackagePrefixes": [ + "github.com/open-telemetry/opentelemetry-collector-contrib" + ], + "groupName": "All OTEL Collector contrib packages" + }, + { + "matchManagers": ["gomod"], + "matchSourceUrlPrefixes": ["google.golang.org"], + "groupName": "All google.golang.org packages" + }, + { + "matchManagers": ["gomod"], + "matchPackagePrefixes": ["golang.org/x"], + "groupName": "All golang.org/x packages" } ] }