From a9a8f67e1e73faa2a0085c5ef2e3363ed8ad1589 Mon Sep 17 00:00:00 2001 From: Murphy Chen Date: Mon, 15 Jan 2024 19:49:20 +0800 Subject: [PATCH 01/17] [chore] move azuremonitor exporter to generated lifecycle tests (#30515) Relates to https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27849 --- .../generated_component_test.go | 121 ++++++++++++++++++ exporter/azuremonitorexporter/metadata.yaml | 8 +- 2 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 exporter/azuremonitorexporter/generated_component_test.go diff --git a/exporter/azuremonitorexporter/generated_component_test.go b/exporter/azuremonitorexporter/generated_component_test.go new file mode 100644 index 000000000000..7b6fd2117415 --- /dev/null +++ b/exporter/azuremonitorexporter/generated_component_test.go @@ -0,0 +1,121 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package azuremonitorexporter + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/component/componenttest" + + "go.opentelemetry.io/collector/exporter" + "go.opentelemetry.io/collector/exporter/exportertest" + + "go.opentelemetry.io/collector/confmap/confmaptest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata" +) + +// assertNoErrorHost implements a component.Host that asserts that there were no errors. +type assertNoErrorHost struct { + component.Host + *testing.T +} + +var _ component.Host = (*assertNoErrorHost)(nil) + +// newAssertNoErrorHost returns a new instance of assertNoErrorHost. +func newAssertNoErrorHost(t *testing.T) component.Host { + return &assertNoErrorHost{ + componenttest.NewNopHost(), + t, + } +} + +func (aneh *assertNoErrorHost) ReportFatalError(err error) { + assert.NoError(aneh, err) +} + +func TestComponentLifecycle(t *testing.T) { + factory := NewFactory() + + tests := []struct { + name string + createFn func(ctx context.Context, set exporter.CreateSettings, cfg component.Config) (component.Component, error) + }{ + + { + name: "logs", + createFn: func(ctx context.Context, set exporter.CreateSettings, cfg component.Config) (component.Component, error) { + return factory.CreateLogsExporter(ctx, set, cfg) + }, + }, + + { + name: "metrics", + createFn: func(ctx context.Context, set exporter.CreateSettings, cfg component.Config) (component.Component, error) { + return factory.CreateMetricsExporter(ctx, set, cfg) + }, + }, + + { + name: "traces", + createFn: func(ctx context.Context, set exporter.CreateSettings, cfg component.Config) (component.Component, error) { + return factory.CreateTracesExporter(ctx, set, cfg) + }, + }, + } + + cm, err := confmaptest.LoadConf("metadata.yaml") + require.NoError(t, err) + cfg := factory.CreateDefaultConfig() + sub, err := cm.Sub("tests::config") + require.NoError(t, err) + require.NoError(t, component.UnmarshalConfig(sub, cfg)) + + for _, test := range tests { + t.Run(test.name+"-shutdown", func(t *testing.T) { + c, err := test.createFn(context.Background(), exportertest.NewNopCreateSettings(), cfg) + require.NoError(t, err) + err = c.Shutdown(context.Background()) + require.NoError(t, err) + }) + + t.Run(test.name+"-lifecycle", func(t *testing.T) { + + c, err := test.createFn(context.Background(), exportertest.NewNopCreateSettings(), cfg) + require.NoError(t, err) + host := newAssertNoErrorHost(t) + err = c.Start(context.Background(), host) + require.NoError(t, err) + assert.NotPanics(t, func() { + switch e := c.(type) { + case exporter.Logs: + logs := testdata.GenerateLogsManyLogRecordsSameResource(2) + if !e.Capabilities().MutatesData { + logs.MarkReadOnly() + } + err = e.ConsumeLogs(context.Background(), logs) + case exporter.Metrics: + metrics := testdata.GenerateMetricsTwoMetrics() + if !e.Capabilities().MutatesData { + metrics.MarkReadOnly() + } + err = e.ConsumeMetrics(context.Background(), metrics) + case exporter.Traces: + traces := testdata.GenerateTracesTwoSpansSameResource() + if !e.Capabilities().MutatesData { + traces.MarkReadOnly() + } + err = e.ConsumeTraces(context.Background(), traces) + } + }) + + err = c.Shutdown(context.Background()) + require.NoError(t, err) + }) + } +} diff --git a/exporter/azuremonitorexporter/metadata.yaml b/exporter/azuremonitorexporter/metadata.yaml index f6b86a88aac0..ebf943728c2e 100644 --- a/exporter/azuremonitorexporter/metadata.yaml +++ b/exporter/azuremonitorexporter/metadata.yaml @@ -6,4 +6,10 @@ status: beta: [traces, metrics, logs] distributions: [contrib, observiq] codeowners: - active: [pcwiese] \ No newline at end of file + active: [pcwiese] + +tests: + config: + connection_string: "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://ingestion.azuremonitor.com/" + instrumentation_key: b1cd0778-85fc-4677-a3fa-79d3c23e0efd + expect_consumer_error: true \ No newline at end of file From 29f0d51aa8b86ce3533d91e42dd9fcd304d5047c Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 09:03:19 -0800 Subject: [PATCH 02/17] [chore] fix codeowners (#30555) Regenerate codeowners. --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2032d9fe091f..9328e0cfc52d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -31,7 +31,7 @@ connector/exceptionsconnector/ @open-telemetry/collect connector/failoverconnector/ @open-telemetry/collector-contrib-approvers @djaglowski @fatsheep9146 connector/routingconnector/ @open-telemetry/collector-contrib-approvers @jpkrohling @mwear connector/servicegraphconnector/ @open-telemetry/collector-contrib-approvers @jpkrohling @mapno -connector/spanmetricsconnector/ @open-telemetry/collector-contrib-approvers @albertteoh +connector/spanmetricsconnector/ @open-telemetry/collector-contrib-approvers @albertteoh @portertech examples/demo/ @open-telemetry/collector-contrib-approvers @open-telemetry/collector-approvers From 3de63cf2ada92a9da5a7b972fa860dfd14a5f063 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 09:03:57 -0800 Subject: [PATCH 03/17] [chore] fix invalid comment (#30548) --- receiver/vcenterreceiver/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/vcenterreceiver/client.go b/receiver/vcenterreceiver/client.go index 7dc5e9d891eb..0bb506a4e8d0 100644 --- a/receiver/vcenterreceiver/client.go +++ b/receiver/vcenterreceiver/client.go @@ -80,7 +80,7 @@ func (vc *vcenterClient) Disconnect(ctx context.Context) error { return nil } -// Clusters returns the clusterComputeResources of the vSphere SDK +// Datacenters returns the datacenterComputeResources of the vSphere SDK func (vc *vcenterClient) Datacenters(ctx context.Context) ([]*object.Datacenter, error) { datacenters, err := vc.finder.DatacenterList(ctx, "*") if err != nil { From 96a4d5e700ea77e1e53961aba34f62fc091be7a6 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 09:04:23 -0800 Subject: [PATCH 04/17] [chore] finish sentence (#30547) alternatively, we can look at deleting this comment altogether as this struct is not exported. --- receiver/vcenterreceiver/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/vcenterreceiver/client.go b/receiver/vcenterreceiver/client.go index 0bb506a4e8d0..36ce302f2f75 100644 --- a/receiver/vcenterreceiver/client.go +++ b/receiver/vcenterreceiver/client.go @@ -17,7 +17,7 @@ import ( vt "github.com/vmware/govmomi/vim25/types" ) -// vcenterClient is a client that +// vcenterClient is a client that collects data from a vCenter endpoint. type vcenterClient struct { moClient *govmomi.Client vimDriver *vim25.Client From 348de0cc0b7e40754a79224a82b69ef9ff9d898a Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 09:07:45 -0800 Subject: [PATCH 05/17] [chore] skywalking receiver ReportFatalError -> ReportStatus (#30510) Remove use of deprecated host.ReportFatalError #30501 --- receiver/skywalkingreceiver/skywalking_receiver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/receiver/skywalkingreceiver/skywalking_receiver.go b/receiver/skywalkingreceiver/skywalking_receiver.go index 91e324609163..b7124d19c9e8 100644 --- a/receiver/skywalkingreceiver/skywalking_receiver.go +++ b/receiver/skywalkingreceiver/skywalking_receiver.go @@ -153,7 +153,7 @@ func (sr *swReceiver) startCollector(host component.Host) error { go func() { defer sr.goroutines.Done() if errHTTP := sr.collectorServer.Serve(cln); !errors.Is(errHTTP, http.ErrServerClosed) && errHTTP != nil { - host.ReportFatalError(errHTTP) + sr.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(errHTTP)) } }() } @@ -188,7 +188,7 @@ func (sr *swReceiver) startCollector(host component.Host) error { go func() { defer sr.goroutines.Done() if errGrpc := sr.grpc.Serve(gln); !errors.Is(errGrpc, grpc.ErrServerStopped) && errGrpc != nil { - host.ReportFatalError(errGrpc) + sr.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(errGrpc)) } }() } From 3d84fbd273adbe3d3e4cdeefdf8b3dcadd45d9e2 Mon Sep 17 00:00:00 2001 From: Vyacheslav Shmeltser <59681751+go-follow@users.noreply.github.com> Date: Tue, 16 Jan 2024 00:10:07 +0700 Subject: [PATCH 06/17] [exporter/cassandra] Added authorization by username and password (#27841) Added authorization by username and password for the Casandra exporter Fixes https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27827 --------- Co-authored-by: Curtis Robert <92119472+crobert-1@users.noreply.github.com> --- .../cassandraexporter-add-authorization.yaml | 20 ++++++ exporter/cassandraexporter/README.md | 4 ++ exporter/cassandraexporter/config.go | 12 +++- exporter/cassandraexporter/exporter_logs.go | 32 ++++++++- .../cassandraexporter/exporter_logs_test.go | 66 +++++++++++++++++++ exporter/cassandraexporter/exporter_traces.go | 12 +++- exporter/cassandraexporter/go.mod | 1 + exporter/cassandraexporter/go.sum | 2 + 8 files changed, 142 insertions(+), 7 deletions(-) create mode 100644 .chloggen/cassandraexporter-add-authorization.yaml create mode 100644 exporter/cassandraexporter/exporter_logs_test.go diff --git a/.chloggen/cassandraexporter-add-authorization.yaml b/.chloggen/cassandraexporter-add-authorization.yaml new file mode 100644 index 000000000000..9f22f87938a8 --- /dev/null +++ b/.chloggen/cassandraexporter-add-authorization.yaml @@ -0,0 +1,20 @@ +# Use this changelog template to create an entry for release notes. +# If your change doesn't affect end users, such as a test fix or a tooling change, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: cassandraexporter + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: added authorization by username and password + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [27827] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/exporter/cassandraexporter/README.md b/exporter/cassandraexporter/README.md index b4b6524e6e52..3795554f2874 100644 --- a/exporter/cassandraexporter/README.md +++ b/exporter/cassandraexporter/README.md @@ -25,6 +25,7 @@ The following settings can be optionally configured: - `replication` (default = class: SimpleStrategy, replication_factor: 1): The strategy of replication. https://cassandra.apache.org/doc/4.1/cassandra/architecture/dynamo.html#replication-strategy - `compression` (default = LZ4Compressor): https://cassandra.apache.org/doc/latest/cassandra/operating/compression.html +- `auth` (default = username: "", password: "") Authorization for the Cassandra. ## Example @@ -41,4 +42,7 @@ exporters: replication_factor: 1 compression: algorithm: "ZstdCompressor" + auth: + username: "your-username" + password: "your-password" ``` diff --git a/exporter/cassandraexporter/config.go b/exporter/cassandraexporter/config.go index 2a2c6ffbc580..97885c9c19a4 100644 --- a/exporter/cassandraexporter/config.go +++ b/exporter/cassandraexporter/config.go @@ -2,7 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package cassandraexporter // import "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/cassandraexporter" -import "time" +import ( + "time" + + "go.opentelemetry.io/collector/config/configopaque" +) type Config struct { DSN string `mapstructure:"dsn"` @@ -13,6 +17,7 @@ type Config struct { LogsTable string `mapstructure:"logs_table"` Replication Replication `mapstructure:"replication"` Compression Compression `mapstructure:"compression"` + Auth Auth `mapstructure:"auth"` } type Replication struct { @@ -23,3 +28,8 @@ type Replication struct { type Compression struct { Algorithm string `mapstructure:"algorithm"` } + +type Auth struct { + UserName string `mapstructure:"username"` + Password configopaque.String `mapstructure:"password"` +} diff --git a/exporter/cassandraexporter/exporter_logs.go b/exporter/cassandraexporter/exporter_logs.go index c37a79687ddf..78481c1f5a0b 100644 --- a/exporter/cassandraexporter/exporter_logs.go +++ b/exporter/cassandraexporter/exporter_logs.go @@ -6,6 +6,7 @@ package cassandraexporter // import "github.com/open-telemetry/opentelemetry-col import ( "context" "encoding/json" + "errors" "fmt" "time" @@ -24,13 +25,16 @@ type logsExporter struct { } func newLogsExporter(logger *zap.Logger, cfg *Config) (*logsExporter, error) { - cluster := gocql.NewCluster(cfg.DSN) - session, err := cluster.CreateSession() + cluster, err := newCluster(cfg) + if err != nil { + return nil, err + } cluster.Keyspace = cfg.Keyspace cluster.Consistency = gocql.Quorum cluster.Port = cfg.Port cluster.Timeout = cfg.Timeout + session, err := cluster.CreateSession() if err != nil { return nil, err } @@ -40,7 +44,10 @@ func newLogsExporter(logger *zap.Logger, cfg *Config) (*logsExporter, error) { func initializeLogKernel(cfg *Config) error { ctx := context.Background() - cluster := gocql.NewCluster(cfg.DSN) + cluster, err := newCluster(cfg) + if err != nil { + return err + } cluster.Consistency = gocql.Quorum cluster.Port = cfg.Port cluster.Timeout = cfg.Timeout @@ -64,6 +71,25 @@ func initializeLogKernel(cfg *Config) error { return nil } +func newCluster(cfg *Config) (*gocql.ClusterConfig, error) { + cluster := gocql.NewCluster(cfg.DSN) + if cfg.Auth.UserName != "" && cfg.Auth.Password == "" { + return nil, errors.New("empty auth.password") + } + if cfg.Auth.Password != "" && cfg.Auth.UserName == "" { + return nil, errors.New("empty auth.username") + } + if cfg.Auth.UserName != "" && cfg.Auth.Password != "" { + cluster.Authenticator = gocql.PasswordAuthenticator{ + Username: cfg.Auth.UserName, + Password: string(cfg.Auth.Password), + } + } + cluster.Consistency = gocql.Quorum + cluster.Port = cfg.Port + return cluster, nil +} + func (e *logsExporter) Start(_ context.Context, _ component.Host) error { initializeErr := initializeLogKernel(e.cfg) return initializeErr diff --git a/exporter/cassandraexporter/exporter_logs_test.go b/exporter/cassandraexporter/exporter_logs_test.go new file mode 100644 index 000000000000..017b14fc2346 --- /dev/null +++ b/exporter/cassandraexporter/exporter_logs_test.go @@ -0,0 +1,66 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package cassandraexporter + +import ( + "errors" + "testing" + + "github.com/gocql/gocql" + "github.com/stretchr/testify/require" +) + +func TestNewCluster(t *testing.T) { + testCases := map[string]struct { + cfg *Config + expectedAuthenticator gocql.Authenticator + expectedErr error + }{ + "empty_auth": { + cfg: withDefaultConfig(), + expectedAuthenticator: nil, + }, + "empty_username": { + cfg: withDefaultConfig(func(config *Config) { + config.Auth.Password = "pass" + }), + expectedAuthenticator: nil, + expectedErr: errors.New("empty auth.username"), + }, + "empty_password": { + cfg: withDefaultConfig(func(config *Config) { + config.Auth.UserName = "user" + }), + expectedAuthenticator: nil, + expectedErr: errors.New("empty auth.password"), + }, + "success_auth": { + cfg: withDefaultConfig(func(config *Config) { + config.Auth.UserName = "user" + config.Auth.Password = "pass" + }), + expectedAuthenticator: gocql.PasswordAuthenticator{ + Username: "user", + Password: "pass", + }, + }, + } + for name, test := range testCases { + t.Run(name, func(t *testing.T) { + c, err := newCluster(test.cfg) + if err == nil { + require.Equal(t, test.expectedAuthenticator, c.Authenticator) + } + require.Equal(t, test.expectedErr, err) + }) + } +} + +func withDefaultConfig(fns ...func(*Config)) *Config { + cfg := createDefaultConfig().(*Config) + for _, fn := range fns { + fn(cfg) + } + return cfg +} diff --git a/exporter/cassandraexporter/exporter_traces.go b/exporter/cassandraexporter/exporter_traces.go index 314aa2818d94..b6fe0919624b 100644 --- a/exporter/cassandraexporter/exporter_traces.go +++ b/exporter/cassandraexporter/exporter_traces.go @@ -23,13 +23,16 @@ type tracesExporter struct { } func newTracesExporter(logger *zap.Logger, cfg *Config) (*tracesExporter, error) { - cluster := gocql.NewCluster(cfg.DSN) - session, err := cluster.CreateSession() + cluster, err := newCluster(cfg) + if err != nil { + return nil, err + } cluster.Keyspace = cfg.Keyspace cluster.Consistency = gocql.Quorum cluster.Port = cfg.Port cluster.Timeout = cfg.Timeout + session, err := cluster.CreateSession() if err != nil { return nil, err } @@ -39,7 +42,10 @@ func newTracesExporter(logger *zap.Logger, cfg *Config) (*tracesExporter, error) func initializeTraceKernel(cfg *Config) error { ctx := context.Background() - cluster := gocql.NewCluster(cfg.DSN) + cluster, err := newCluster(cfg) + if err != nil { + return err + } cluster.Consistency = gocql.Quorum cluster.Port = cfg.Port cluster.Timeout = cfg.Timeout diff --git a/exporter/cassandraexporter/go.mod b/exporter/cassandraexporter/go.mod index 4e022a162ca5..c149496d2b74 100644 --- a/exporter/cassandraexporter/go.mod +++ b/exporter/cassandraexporter/go.mod @@ -7,6 +7,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.92.0 github.com/stretchr/testify v1.8.4 go.opentelemetry.io/collector/component v0.92.1-0.20240112172857-83d463ceba06 + go.opentelemetry.io/collector/config/configopaque v0.92.1-0.20240112172857-83d463ceba06 go.opentelemetry.io/collector/confmap v0.92.1-0.20240112172857-83d463ceba06 go.opentelemetry.io/collector/exporter v0.92.1-0.20240112172857-83d463ceba06 go.opentelemetry.io/collector/pdata v1.0.2-0.20240112172857-83d463ceba06 diff --git a/exporter/cassandraexporter/go.sum b/exporter/cassandraexporter/go.sum index 00a3712f8070..7cef378ed9d8 100644 --- a/exporter/cassandraexporter/go.sum +++ b/exporter/cassandraexporter/go.sum @@ -279,6 +279,8 @@ go.opentelemetry.io/collector v0.92.1-0.20240112172857-83d463ceba06 h1:305NltdJC go.opentelemetry.io/collector v0.92.1-0.20240112172857-83d463ceba06/go.mod h1:3MM6b+3rjdLMf3grxk4l9Mu4udi4C2kObyaT+Z+KuoI= go.opentelemetry.io/collector/component v0.92.1-0.20240112172857-83d463ceba06 h1:2bkhiQn7O1UGsXlgxPQ3zf2pX+A4AGCxWs0SjZk1BXE= go.opentelemetry.io/collector/component v0.92.1-0.20240112172857-83d463ceba06/go.mod h1:J5ZAcv/ONu5Cdid/UzqF2T87k8ui8Z+c6n8s+640Vc8= +go.opentelemetry.io/collector/config/configopaque v0.92.1-0.20240112172857-83d463ceba06 h1:M1FjOD4ms4Mpzg9/r6ryjxNDz6dVK/2Y2yPu5syGKZo= +go.opentelemetry.io/collector/config/configopaque v0.92.1-0.20240112172857-83d463ceba06/go.mod h1:dQK8eUXjIGKaw1RB7UIg2nqx56AueNxeKFCdB0P1ypg= go.opentelemetry.io/collector/config/configretry v0.92.1-0.20240112172857-83d463ceba06 h1:o56gyZ9o4lAbcd3jP7MC3DqhIYo11qyLL0w5KB949XY= go.opentelemetry.io/collector/config/configretry v0.92.1-0.20240112172857-83d463ceba06/go.mod h1:gt1HRYyMxcMca9lbDLPbivQzsUCjVjkPAn/3S6fiD14= go.opentelemetry.io/collector/config/configtelemetry v0.92.1-0.20240112172857-83d463ceba06 h1:FqiK9txeD9sIn5edjyYXj/RB9/YVle10QR43PyhVt6o= From e8b452791f43b9612ef3bbd8ebec2d864e2b31af Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 09:11:36 -0800 Subject: [PATCH 07/17] [chore] statsd receiver ReportFatalError -> ReportStatus (#30505) Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/statsdreceiver/factory_test.go | 13 ------------- receiver/statsdreceiver/receiver.go | 4 ++-- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/receiver/statsdreceiver/factory_test.go b/receiver/statsdreceiver/factory_test.go index 932d52b0e41e..095a8bd4a4d2 100644 --- a/receiver/statsdreceiver/factory_test.go +++ b/receiver/statsdreceiver/factory_test.go @@ -8,24 +8,11 @@ import ( "testing" "github.com/stretchr/testify/assert" - "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/consumer/consumertest" "go.opentelemetry.io/collector/receiver/receivertest" ) -type testHost struct { - component.Host - t *testing.T -} - -// ReportFatalError causes the test to be run to fail. -func (h *testHost) ReportFatalError(err error) { - h.t.Fatalf("receiver reported a fatal error: %v", err) -} - -var _ component.Host = (*testHost)(nil) - func TestCreateDefaultConfig(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig() diff --git a/receiver/statsdreceiver/receiver.go b/receiver/statsdreceiver/receiver.go index de61a6537ee7..aba562030ee1 100644 --- a/receiver/statsdreceiver/receiver.go +++ b/receiver/statsdreceiver/receiver.go @@ -81,7 +81,7 @@ func buildTransportServer(config Config) (transport.Server, error) { } // Start starts a UDP server that can process StatsD messages. -func (r *statsdReceiver) Start(ctx context.Context, host component.Host) error { +func (r *statsdReceiver) Start(ctx context.Context, _ component.Host) error { ctx, r.cancel = context.WithCancel(ctx) server, err := buildTransportServer(*r.config) if err != nil { @@ -102,7 +102,7 @@ func (r *statsdReceiver) Start(ctx context.Context, host component.Host) error { go func() { if err := r.server.ListenAndServe(r.nextConsumer, r.reporter, transferChan); err != nil { if !errors.Is(err, net.ErrClosed) { - host.ReportFatalError(err) + r.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(err)) } } }() From 19f96f0086ed410806d25db9f159afba3db219e6 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 09:17:07 -0800 Subject: [PATCH 08/17] [chore] prometheus receiver ReportFatalError -> ReportStatus (#30509) Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/prometheusreceiver/metrics_receiver.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/receiver/prometheusreceiver/metrics_receiver.go b/receiver/prometheusreceiver/metrics_receiver.go index c8d709b4ca19..7bce1614604f 100644 --- a/receiver/prometheusreceiver/metrics_receiver.go +++ b/receiver/prometheusreceiver/metrics_receiver.go @@ -66,7 +66,7 @@ func newPrometheusReceiver(set receiver.CreateSettings, cfg *Config, next consum // Start is the method that starts Prometheus scraping. It // is controlled by having previously defined a Configuration using perhaps New. -func (r *pReceiver) Start(_ context.Context, host component.Host) error { +func (r *pReceiver) Start(_ context.Context, _ component.Host) error { discoveryCtx, cancel := context.WithCancel(context.Background()) r.cancelFunc = cancel @@ -75,7 +75,7 @@ func (r *pReceiver) Start(_ context.Context, host component.Host) error { // add scrape configs defined by the collector configs baseCfg := r.cfg.PrometheusConfig - err := r.initPrometheusComponents(discoveryCtx, host, logger) + err := r.initPrometheusComponents(discoveryCtx, logger) if err != nil { r.settings.Logger.Error("Failed to initPrometheusComponents Prometheus components", zap.Error(err)) return err @@ -233,14 +233,14 @@ func (r *pReceiver) applyCfg(cfg *config.Config) error { return r.discoveryManager.ApplyConfig(discoveryCfg) } -func (r *pReceiver) initPrometheusComponents(ctx context.Context, host component.Host, logger log.Logger) error { +func (r *pReceiver) initPrometheusComponents(ctx context.Context, logger log.Logger) error { r.discoveryManager = discovery.NewManager(ctx, logger) go func() { r.settings.Logger.Info("Starting discovery manager") if err := r.discoveryManager.Run(); err != nil && !errors.Is(err, context.Canceled) { r.settings.Logger.Error("Discovery manager failed", zap.Error(err)) - host.ReportFatalError(err) + r.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(err)) } }() @@ -282,7 +282,7 @@ func (r *pReceiver) initPrometheusComponents(ctx context.Context, host component r.settings.Logger.Info("Starting scrape manager") if err := r.scrapeManager.Run(r.discoveryManager.SyncCh()); err != nil { r.settings.Logger.Error("Scrape manager failed", zap.Error(err)) - host.ReportFatalError(err) + r.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(err)) } }() return nil From d0b7bb7f97abbf69f3dce641b2bdab7d392fbf3b Mon Sep 17 00:00:00 2001 From: Murphy Chen Date: Tue, 16 Jan 2024 06:44:07 +0800 Subject: [PATCH 09/17] [chore] move sentry exporter to generated lifecycle tests (#30544) Relates to https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27849 --- .../generated_component_test.go | 107 ++++++++++++++++++ exporter/sentryexporter/metadata.yaml | 5 + 2 files changed, 112 insertions(+) create mode 100644 exporter/sentryexporter/generated_component_test.go diff --git a/exporter/sentryexporter/generated_component_test.go b/exporter/sentryexporter/generated_component_test.go new file mode 100644 index 000000000000..8644c85f2a77 --- /dev/null +++ b/exporter/sentryexporter/generated_component_test.go @@ -0,0 +1,107 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package sentryexporter + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/component/componenttest" + + "go.opentelemetry.io/collector/exporter" + "go.opentelemetry.io/collector/exporter/exportertest" + + "go.opentelemetry.io/collector/confmap/confmaptest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata" +) + +// assertNoErrorHost implements a component.Host that asserts that there were no errors. +type assertNoErrorHost struct { + component.Host + *testing.T +} + +var _ component.Host = (*assertNoErrorHost)(nil) + +// newAssertNoErrorHost returns a new instance of assertNoErrorHost. +func newAssertNoErrorHost(t *testing.T) component.Host { + return &assertNoErrorHost{ + componenttest.NewNopHost(), + t, + } +} + +func (aneh *assertNoErrorHost) ReportFatalError(err error) { + assert.NoError(aneh, err) +} + +func TestComponentLifecycle(t *testing.T) { + factory := NewFactory() + + tests := []struct { + name string + createFn func(ctx context.Context, set exporter.CreateSettings, cfg component.Config) (component.Component, error) + }{ + + { + name: "traces", + createFn: func(ctx context.Context, set exporter.CreateSettings, cfg component.Config) (component.Component, error) { + return factory.CreateTracesExporter(ctx, set, cfg) + }, + }, + } + + cm, err := confmaptest.LoadConf("metadata.yaml") + require.NoError(t, err) + cfg := factory.CreateDefaultConfig() + sub, err := cm.Sub("tests::config") + require.NoError(t, err) + require.NoError(t, component.UnmarshalConfig(sub, cfg)) + + for _, test := range tests { + t.Run(test.name+"-shutdown", func(t *testing.T) { + c, err := test.createFn(context.Background(), exportertest.NewNopCreateSettings(), cfg) + require.NoError(t, err) + err = c.Shutdown(context.Background()) + require.NoError(t, err) + }) + + t.Run(test.name+"-lifecycle", func(t *testing.T) { + + c, err := test.createFn(context.Background(), exportertest.NewNopCreateSettings(), cfg) + require.NoError(t, err) + host := newAssertNoErrorHost(t) + err = c.Start(context.Background(), host) + require.NoError(t, err) + assert.NotPanics(t, func() { + switch e := c.(type) { + case exporter.Logs: + logs := testdata.GenerateLogsManyLogRecordsSameResource(2) + if !e.Capabilities().MutatesData { + logs.MarkReadOnly() + } + err = e.ConsumeLogs(context.Background(), logs) + case exporter.Metrics: + metrics := testdata.GenerateMetricsTwoMetrics() + if !e.Capabilities().MutatesData { + metrics.MarkReadOnly() + } + err = e.ConsumeMetrics(context.Background(), metrics) + case exporter.Traces: + traces := testdata.GenerateTracesTwoSpansSameResource() + if !e.Capabilities().MutatesData { + traces.MarkReadOnly() + } + err = e.ConsumeTraces(context.Background(), traces) + } + }) + + err = c.Shutdown(context.Background()) + require.NoError(t, err) + }) + } +} diff --git a/exporter/sentryexporter/metadata.yaml b/exporter/sentryexporter/metadata.yaml index 74cf89d6984b..ea049b5c20f0 100644 --- a/exporter/sentryexporter/metadata.yaml +++ b/exporter/sentryexporter/metadata.yaml @@ -7,3 +7,8 @@ status: distributions: [contrib] codeowners: active: [AbhiPrasad] + + +tests: + config: + expect_consumer_error: true \ No newline at end of file From cae5ac8e0be2a437fa0ffe6d48bebfb8f29273d4 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 14:48:05 -0800 Subject: [PATCH 10/17] [chore] sapm receiver ReportFatalError -> ReportStatus (#30507) **Description:** Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/sapmreceiver/trace_receiver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/sapmreceiver/trace_receiver.go b/receiver/sapmreceiver/trace_receiver.go index 7a7ce06bdd20..ded4c28e8555 100644 --- a/receiver/sapmreceiver/trace_receiver.go +++ b/receiver/sapmreceiver/trace_receiver.go @@ -176,7 +176,7 @@ func (sr *sapmReceiver) Start(_ context.Context, host component.Host) error { go func() { defer sr.shutdownWG.Done() if errHTTP := sr.server.Serve(ln); !errors.Is(errHTTP, http.ErrServerClosed) && errHTTP != nil { - host.ReportFatalError(errHTTP) + sr.settings.ReportStatus(component.NewFatalErrorEvent(errHTTP)) } }() return nil From c0a7714349c42c8a3d6253df34430890a132489b Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 14:48:40 -0800 Subject: [PATCH 11/17] [chore] splunkhec receiver ReportFatalError -> ReportStatus (#30508) **Description:** Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/splunkhecreceiver/receiver.go | 2 +- receiver/splunkhecreceiver/receiver_test.go | 31 ++++++--------------- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/receiver/splunkhecreceiver/receiver.go b/receiver/splunkhecreceiver/receiver.go index ccf13b18be93..d12403629c3b 100644 --- a/receiver/splunkhecreceiver/receiver.go +++ b/receiver/splunkhecreceiver/receiver.go @@ -216,7 +216,7 @@ func (r *splunkReceiver) Start(_ context.Context, host component.Host) error { go func() { defer r.shutdownWG.Done() if errHTTP := r.server.Serve(ln); !errors.Is(errHTTP, http.ErrServerClosed) && errHTTP != nil { - host.ReportFatalError(errHTTP) + r.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(errHTTP)) } }() diff --git a/receiver/splunkhecreceiver/receiver_test.go b/receiver/splunkhecreceiver/receiver_test.go index 4fc29b3d07da..a3cb71a1f051 100644 --- a/receiver/splunkhecreceiver/receiver_test.go +++ b/receiver/splunkhecreceiver/receiver_test.go @@ -463,17 +463,20 @@ func Test_splunkhecReceiver_TLS(t *testing.T) { }, } sink := new(consumertest.LogsSink) - r, err := newLogsReceiver(receivertest.NewNopCreateSettings(), *cfg, sink) + set := receivertest.NewNopCreateSettings() + set.ReportStatus = func(event *component.StatusEvent) { + assert.NoError(t, event.Err()) + } + r, err := newLogsReceiver(set, *cfg, sink) require.NoError(t, err) defer func() { require.NoError(t, r.Shutdown(context.Background())) }() - mh := newAssertNoErrHost(t) - require.NoError(t, r.Start(context.Background(), mh), "should not have failed to start log reception") - require.NoError(t, r.Start(context.Background(), mh), "should not fail to start log on second Start call") + require.NoError(t, r.Start(context.Background(), componenttest.NewNopHost()), "should not have failed to start log reception") + require.NoError(t, r.Start(context.Background(), componenttest.NewNopHost()), "should not fail to start log on second Start call") - // If there are errors reported through host.ReportFatalError() this will retrieve it. + // If there are errors reported through ReportStatus this will retrieve it. <-time.After(500 * time.Millisecond) t.Log("Event Reception Started") @@ -911,24 +914,6 @@ func (b badReqBody) Close() error { return nil } -// assertNoErrHost implements a component.Host that asserts that there were no errors. -type assertNoErrHost struct { - component.Host - *testing.T -} - -// newAssertNoErrHost returns a new instance of assertNoErrHost. -func newAssertNoErrHost(t *testing.T) component.Host { - return &assertNoErrHost{ - Host: componenttest.NewNopHost(), - T: t, - } -} - -func (aneh *assertNoErrHost) ReportFatalError(err error) { - assert.NoError(aneh, err) -} - func Test_splunkhecReceiver_handleRawReq(t *testing.T) { t.Parallel() config := createDefaultConfig().(*Config) From 14bdd68088909b91576244137b676031547c2a14 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 14:52:33 -0800 Subject: [PATCH 12/17] [chore] opencensus receiver ReportFatalError -> ReportStatus (#30502) **Description:** Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/opencensusreceiver/opencensus.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/receiver/opencensusreceiver/opencensus.go b/receiver/opencensusreceiver/opencensus.go index 32e091eee1f0..fa36aaf37b6e 100644 --- a/receiver/opencensusreceiver/opencensus.go +++ b/receiver/opencensusreceiver/opencensus.go @@ -105,7 +105,7 @@ func (ocr *ocReceiver) Start(_ context.Context, host component.Host) error { return errors.New("cannot start receiver: no consumers were specified") } - if err := ocr.startServer(host); err != nil { + if err := ocr.startServer(); err != nil { return err } @@ -211,7 +211,7 @@ func (ocr *ocReceiver) httpServer() *http.Server { return ocr.serverHTTP } -func (ocr *ocReceiver) startServer(host component.Host) error { +func (ocr *ocReceiver) startServer() error { // Register the grpc-gateway on the HTTP server mux c := context.Background() opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} @@ -241,17 +241,17 @@ func (ocr *ocReceiver) startServer(host component.Host) error { // Check for cmux.ErrServerClosed, because during the shutdown this is not properly close before closing the cmux, // see TODO in Shutdown. if err := ocr.serverGRPC.Serve(grpcL); !errors.Is(err, grpc.ErrServerStopped) && !errors.Is(err, cmux.ErrServerClosed) && err != nil { - host.ReportFatalError(err) + ocr.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(err)) } }() go func() { if err := ocr.httpServer().Serve(httpL); !errors.Is(err, http.ErrServerClosed) && err != nil { - host.ReportFatalError(err) + ocr.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(err)) } }() go func() { if err := m.Serve(); !errors.Is(err, cmux.ErrServerClosed) && err != nil { - host.ReportFatalError(err) + ocr.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(err)) } }() return nil From 3f33b59e80aa1a42a25f2d33e6a40802d06caa81 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 17:34:12 -0800 Subject: [PATCH 13/17] [chore] zipkin receiver ReportFatalError -> ReportStatus (#30503) **Description:** Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/zipkinreceiver/trace_receiver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/zipkinreceiver/trace_receiver.go b/receiver/zipkinreceiver/trace_receiver.go index 4a39753d3a64..5b3d6108f514 100644 --- a/receiver/zipkinreceiver/trace_receiver.go +++ b/receiver/zipkinreceiver/trace_receiver.go @@ -111,7 +111,7 @@ func (zr *zipkinReceiver) Start(_ context.Context, host component.Host) error { defer zr.shutdownWG.Done() if errHTTP := zr.server.Serve(listener); !errors.Is(errHTTP, http.ErrServerClosed) && errHTTP != nil { - host.ReportFatalError(errHTTP) + zr.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(errHTTP)) } }() From 5482a6250d00d534f00d6166a046aeff3cba09ba Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Mon, 15 Jan 2024 17:34:34 -0800 Subject: [PATCH 14/17] [chore] webhookevent receiver ReportFatalError -> ReportStatus (#30504) **Description:** Remove use of deprecated host.ReportFatalError **Link to tracking Issue:** #30501 --- receiver/webhookeventreceiver/receiver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/webhookeventreceiver/receiver.go b/receiver/webhookeventreceiver/receiver.go index f8720a10879c..9610a6c19cb5 100644 --- a/receiver/webhookeventreceiver/receiver.go +++ b/receiver/webhookeventreceiver/receiver.go @@ -125,7 +125,7 @@ func (er *eventReceiver) Start(_ context.Context, host component.Host) error { go func() { defer er.shutdownWG.Done() if errHTTP := er.server.Serve(ln); !errors.Is(errHTTP, http.ErrServerClosed) && errHTTP != nil { - host.ReportFatalError(errHTTP) + er.settings.TelemetrySettings.ReportStatus(component.NewFatalErrorEvent(errHTTP)) } }() From f3d7e09287f4972649a1c0b9b77ada1eb60385e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:16:53 -0800 Subject: [PATCH 15/17] Update module github.com/Azure/go-amqp to v1.0.3 (#30566) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/Azure/go-amqp](https://togithub.com/Azure/go-amqp) | `v1.0.2` -> `v1.0.3` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fAzure%2fgo-amqp/v1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fAzure%2fgo-amqp/v1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fAzure%2fgo-amqp/v1.0.2/v1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fAzure%2fgo-amqp/v1.0.2/v1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
Azure/go-amqp (github.com/Azure/go-amqp) ### [`v1.0.3`](https://togithub.com/Azure/go-amqp/releases/tag/v1.0.3) [Compare Source](https://togithub.com/Azure/go-amqp/compare/v1.0.2...v1.0.3) ##### Bugs Fixed - Fixed an issue that could cause a memory leak when settling messages across Receiver instances.
--- ### Configuration 📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- cmd/configschema/go.mod | 2 +- cmd/configschema/go.sum | 4 ++-- cmd/otelcontribcol/go.mod | 2 +- cmd/otelcontribcol/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- receiver/solacereceiver/go.mod | 2 +- receiver/solacereceiver/go.sum | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cmd/configschema/go.mod b/cmd/configschema/go.mod index 000b221b0ff1..51ab472ab23b 100644 --- a/cmd/configschema/go.mod +++ b/cmd/configschema/go.mod @@ -206,7 +206,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1 // indirect github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe // indirect - github.com/Azure/go-amqp v1.0.2 // indirect + github.com/Azure/go-amqp v1.0.3 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect diff --git a/cmd/configschema/go.sum b/cmd/configschema/go.sum index 8dca40545d0f..0444e465e9a1 100644 --- a/cmd/configschema/go.sum +++ b/cmd/configschema/go.sum @@ -114,8 +114,8 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1 h1:AMf7YbZOZIW5b66cX github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1/go.mod h1:uwfk06ZBcvL/g4VHNjurPfVln9NMbsk2XIZxJ+hu81k= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe h1:HGuouUM1533rBXmMtR7qh5pYNSSjUZG90b/MgJAnb/A= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe/go.mod h1:K6am8mT+5iFXgingS9LUc7TmbsW6XBw3nxaRyaMyWc8= -github.com/Azure/go-amqp v1.0.2 h1:zHCHId+kKC7fO8IkwyZJnWMvtRXhYC0VJtD0GYkHc6M= -github.com/Azure/go-amqp v1.0.2/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= +github.com/Azure/go-amqp v1.0.3 h1:wEXQyG2tromTkSdTTOhpYSmosOlJjtVX5UVk2pxyC0Y= +github.com/Azure/go-amqp v1.0.3/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/cmd/otelcontribcol/go.mod b/cmd/otelcontribcol/go.mod index 6957f4e084b8..b847535f0d8a 100644 --- a/cmd/otelcontribcol/go.mod +++ b/cmd/otelcontribcol/go.mod @@ -252,7 +252,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1 // indirect github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe // indirect - github.com/Azure/go-amqp v1.0.2 // indirect + github.com/Azure/go-amqp v1.0.3 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect diff --git a/cmd/otelcontribcol/go.sum b/cmd/otelcontribcol/go.sum index 1ab787da0043..da71d9bfb174 100644 --- a/cmd/otelcontribcol/go.sum +++ b/cmd/otelcontribcol/go.sum @@ -113,8 +113,8 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1 h1:AMf7YbZOZIW5b66cX github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1/go.mod h1:uwfk06ZBcvL/g4VHNjurPfVln9NMbsk2XIZxJ+hu81k= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe h1:HGuouUM1533rBXmMtR7qh5pYNSSjUZG90b/MgJAnb/A= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe/go.mod h1:K6am8mT+5iFXgingS9LUc7TmbsW6XBw3nxaRyaMyWc8= -github.com/Azure/go-amqp v1.0.2 h1:zHCHId+kKC7fO8IkwyZJnWMvtRXhYC0VJtD0GYkHc6M= -github.com/Azure/go-amqp v1.0.2/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= +github.com/Azure/go-amqp v1.0.3 h1:wEXQyG2tromTkSdTTOhpYSmosOlJjtVX5UVk2pxyC0Y= +github.com/Azure/go-amqp v1.0.3/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/go.mod b/go.mod index 22ca73520fbb..1e90153f5b16 100644 --- a/go.mod +++ b/go.mod @@ -222,7 +222,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1 // indirect github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe // indirect - github.com/Azure/go-amqp v1.0.2 // indirect + github.com/Azure/go-amqp v1.0.3 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect diff --git a/go.sum b/go.sum index c6f2735066bc..051a93f3be74 100644 --- a/go.sum +++ b/go.sum @@ -114,8 +114,8 @@ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1 h1:AMf7YbZOZIW5b66cX github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.1/go.mod h1:uwfk06ZBcvL/g4VHNjurPfVln9NMbsk2XIZxJ+hu81k= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe h1:HGuouUM1533rBXmMtR7qh5pYNSSjUZG90b/MgJAnb/A= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe/go.mod h1:K6am8mT+5iFXgingS9LUc7TmbsW6XBw3nxaRyaMyWc8= -github.com/Azure/go-amqp v1.0.2 h1:zHCHId+kKC7fO8IkwyZJnWMvtRXhYC0VJtD0GYkHc6M= -github.com/Azure/go-amqp v1.0.2/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= +github.com/Azure/go-amqp v1.0.3 h1:wEXQyG2tromTkSdTTOhpYSmosOlJjtVX5UVk2pxyC0Y= +github.com/Azure/go-amqp v1.0.3/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/receiver/solacereceiver/go.mod b/receiver/solacereceiver/go.mod index 70563a4b17db..ef36a5630783 100644 --- a/receiver/solacereceiver/go.mod +++ b/receiver/solacereceiver/go.mod @@ -6,7 +6,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/solace go 1.20 require ( - github.com/Azure/go-amqp v1.0.2 + github.com/Azure/go-amqp v1.0.3 github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 go.opentelemetry.io/collector/component v0.92.1-0.20240112172857-83d463ceba06 diff --git a/receiver/solacereceiver/go.sum b/receiver/solacereceiver/go.sum index 9a12d5f7bb4a..7a7681447b93 100644 --- a/receiver/solacereceiver/go.sum +++ b/receiver/solacereceiver/go.sum @@ -33,8 +33,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-amqp v1.0.2 h1:zHCHId+kKC7fO8IkwyZJnWMvtRXhYC0VJtD0GYkHc6M= -github.com/Azure/go-amqp v1.0.2/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= +github.com/Azure/go-amqp v1.0.3 h1:wEXQyG2tromTkSdTTOhpYSmosOlJjtVX5UVk2pxyC0Y= +github.com/Azure/go-amqp v1.0.3/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= From 7fea3c300304ca97fbac6b7418eb53d4009e0bc8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 18:17:06 -0800 Subject: [PATCH 16/17] Update module github.com/SAP/go-hdb to v1.7.4 (#30567) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [github.com/SAP/go-hdb](https://togithub.com/SAP/go-hdb) | `v1.7.1` -> `v1.7.4` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fSAP%2fgo-hdb/v1.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fSAP%2fgo-hdb/v1.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fSAP%2fgo-hdb/v1.7.1/v1.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fSAP%2fgo-hdb/v1.7.1/v1.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
SAP/go-hdb (github.com/SAP/go-hdb) ### [`v1.7.4`](https://togithub.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v174) [Compare Source](https://togithub.com/SAP/go-hdb/compare/v1.7.2...v1.7.4) - performance improvements ### [`v1.7.2`](https://togithub.com/SAP/go-hdb/blob/HEAD/RELEASENOTES.md#v171---v172) [Compare Source](https://togithub.com/SAP/go-hdb/compare/v1.7.1...v1.7.2) - updated dependencies - go1.22 preparation
--- ### Configuration 📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- cmd/configschema/go.mod | 4 ++-- cmd/configschema/go.sum | 8 ++++---- cmd/otelcontribcol/go.mod | 4 ++-- cmd/otelcontribcol/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- receiver/saphanareceiver/go.mod | 6 +++--- receiver/saphanareceiver/go.sum | 12 ++++++------ receiver/sqlqueryreceiver/go.mod | 8 ++++---- receiver/sqlqueryreceiver/go.sum | 16 ++++++++-------- 10 files changed, 39 insertions(+), 39 deletions(-) diff --git a/cmd/configschema/go.mod b/cmd/configschema/go.mod index 51ab472ab23b..c6c96e2bda33 100644 --- a/cmd/configschema/go.mod +++ b/cmd/configschema/go.mod @@ -246,7 +246,7 @@ require ( github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ReneKroon/ttlcache/v2 v2.11.0 // indirect - github.com/SAP/go-hdb v1.7.1 // indirect + github.com/SAP/go-hdb v1.7.4 // indirect github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/aerospike/aerospike-client-go/v6 v6.13.0 // indirect @@ -678,7 +678,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.18.0 // indirect - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect + golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e // indirect golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect golang.org/x/sync v0.5.0 // indirect diff --git a/cmd/configschema/go.sum b/cmd/configschema/go.sum index 0444e465e9a1..b6040f677653 100644 --- a/cmd/configschema/go.sum +++ b/cmd/configschema/go.sum @@ -229,8 +229,8 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/ReneKroon/ttlcache/v2 v2.11.0 h1:OvlcYFYi941SBN3v9dsDcC2N8vRxyHcCmJb3Vl4QMoM= github.com/ReneKroon/ttlcache/v2 v2.11.0/go.mod h1:mBxvsNY+BT8qLLd6CuAJubbKo6r0jh3nb5et22bbfGY= -github.com/SAP/go-hdb v1.7.1 h1:sAo6RzmT4DrlAysVUy8cCatjBqvp25Q53I5fj6p/gF8= -github.com/SAP/go-hdb v1.7.1/go.mod h1:PZrY7nrl0HQPS/EL0FFXdy679wlW8unQ8sCTDzxTWbs= +github.com/SAP/go-hdb v1.7.4 h1:sLjur7axWA9gAfovQswlZeicnPxWm6WOEza+oScK9f0= +github.com/SAP/go-hdb v1.7.4/go.mod h1:v38PtG76h9ScNGJzPNdGhqBgwAdyeC9ICwDYRPwRbhw= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc h1:MhBvG7RLaLqlyjxMR6of35vt6MVQ+eXMcgn9X/sy0FE= github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= @@ -1764,8 +1764,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e h1:723BNChdd0c2Wk6WOE320qGBiPtYx0F0Bbm1kriShfE= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= diff --git a/cmd/otelcontribcol/go.mod b/cmd/otelcontribcol/go.mod index b847535f0d8a..a151563d3dd2 100644 --- a/cmd/otelcontribcol/go.mod +++ b/cmd/otelcontribcol/go.mod @@ -295,7 +295,7 @@ require ( github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ReneKroon/ttlcache/v2 v2.11.0 // indirect - github.com/SAP/go-hdb v1.7.1 // indirect + github.com/SAP/go-hdb v1.7.4 // indirect github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/aerospike/aerospike-client-go/v6 v6.13.0 // indirect @@ -690,7 +690,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.18.0 // indirect - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect + golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect diff --git a/cmd/otelcontribcol/go.sum b/cmd/otelcontribcol/go.sum index da71d9bfb174..6f3d5b89ab4f 100644 --- a/cmd/otelcontribcol/go.sum +++ b/cmd/otelcontribcol/go.sum @@ -228,8 +228,8 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/ReneKroon/ttlcache/v2 v2.11.0 h1:OvlcYFYi941SBN3v9dsDcC2N8vRxyHcCmJb3Vl4QMoM= github.com/ReneKroon/ttlcache/v2 v2.11.0/go.mod h1:mBxvsNY+BT8qLLd6CuAJubbKo6r0jh3nb5et22bbfGY= -github.com/SAP/go-hdb v1.7.1 h1:sAo6RzmT4DrlAysVUy8cCatjBqvp25Q53I5fj6p/gF8= -github.com/SAP/go-hdb v1.7.1/go.mod h1:PZrY7nrl0HQPS/EL0FFXdy679wlW8unQ8sCTDzxTWbs= +github.com/SAP/go-hdb v1.7.4 h1:sLjur7axWA9gAfovQswlZeicnPxWm6WOEza+oScK9f0= +github.com/SAP/go-hdb v1.7.4/go.mod h1:v38PtG76h9ScNGJzPNdGhqBgwAdyeC9ICwDYRPwRbhw= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc h1:MhBvG7RLaLqlyjxMR6of35vt6MVQ+eXMcgn9X/sy0FE= github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= @@ -1763,8 +1763,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e h1:723BNChdd0c2Wk6WOE320qGBiPtYx0F0Bbm1kriShfE= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= diff --git a/go.mod b/go.mod index 1e90153f5b16..2f0268289663 100644 --- a/go.mod +++ b/go.mod @@ -267,7 +267,7 @@ require ( github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ReneKroon/ttlcache/v2 v2.11.0 // indirect - github.com/SAP/go-hdb v1.7.1 // indirect + github.com/SAP/go-hdb v1.7.4 // indirect github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/aerospike/aerospike-client-go/v6 v6.13.0 // indirect @@ -671,7 +671,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.18.0 // indirect - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect + golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect diff --git a/go.sum b/go.sum index 051a93f3be74..77f05fabf37a 100644 --- a/go.sum +++ b/go.sum @@ -234,8 +234,8 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/ReneKroon/ttlcache/v2 v2.11.0 h1:OvlcYFYi941SBN3v9dsDcC2N8vRxyHcCmJb3Vl4QMoM= github.com/ReneKroon/ttlcache/v2 v2.11.0/go.mod h1:mBxvsNY+BT8qLLd6CuAJubbKo6r0jh3nb5et22bbfGY= -github.com/SAP/go-hdb v1.7.1 h1:sAo6RzmT4DrlAysVUy8cCatjBqvp25Q53I5fj6p/gF8= -github.com/SAP/go-hdb v1.7.1/go.mod h1:PZrY7nrl0HQPS/EL0FFXdy679wlW8unQ8sCTDzxTWbs= +github.com/SAP/go-hdb v1.7.4 h1:sLjur7axWA9gAfovQswlZeicnPxWm6WOEza+oScK9f0= +github.com/SAP/go-hdb v1.7.4/go.mod h1:v38PtG76h9ScNGJzPNdGhqBgwAdyeC9ICwDYRPwRbhw= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc h1:MhBvG7RLaLqlyjxMR6of35vt6MVQ+eXMcgn9X/sy0FE= github.com/SermoDigital/jose v0.9.2-0.20180104203859-803625baeddc/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= @@ -1770,8 +1770,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e h1:723BNChdd0c2Wk6WOE320qGBiPtYx0F0Bbm1kriShfE= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= diff --git a/receiver/saphanareceiver/go.mod b/receiver/saphanareceiver/go.mod index 89e34a53bc66..363d42664110 100644 --- a/receiver/saphanareceiver/go.mod +++ b/receiver/saphanareceiver/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/saphan go 1.20 require ( - github.com/SAP/go-hdb v1.7.1 + github.com/SAP/go-hdb v1.7.4 github.com/google/go-cmp v0.6.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.92.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.92.0 @@ -62,8 +62,8 @@ require ( go.opentelemetry.io/otel/exporters/prometheus v0.44.1-0.20231201153405-6027c1ae76f2 // indirect go.opentelemetry.io/otel/sdk v1.21.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.21.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/receiver/saphanareceiver/go.sum b/receiver/saphanareceiver/go.sum index 729b612f464d..4cad1ea79f7d 100644 --- a/receiver/saphanareceiver/go.sum +++ b/receiver/saphanareceiver/go.sum @@ -35,8 +35,8 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/SAP/go-hdb v1.7.1 h1:sAo6RzmT4DrlAysVUy8cCatjBqvp25Q53I5fj6p/gF8= -github.com/SAP/go-hdb v1.7.1/go.mod h1:PZrY7nrl0HQPS/EL0FFXdy679wlW8unQ8sCTDzxTWbs= +github.com/SAP/go-hdb v1.7.4 h1:sLjur7axWA9gAfovQswlZeicnPxWm6WOEza+oScK9f0= +github.com/SAP/go-hdb v1.7.4/go.mod h1:v38PtG76h9ScNGJzPNdGhqBgwAdyeC9ICwDYRPwRbhw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -313,8 +313,8 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -325,8 +325,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e h1:723BNChdd0c2Wk6WOE320qGBiPtYx0F0Bbm1kriShfE= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= diff --git a/receiver/sqlqueryreceiver/go.mod b/receiver/sqlqueryreceiver/go.mod index 24274aa1872c..de33dd3669e3 100644 --- a/receiver/sqlqueryreceiver/go.mod +++ b/receiver/sqlqueryreceiver/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlque go 1.20 require ( - github.com/SAP/go-hdb v1.7.1 + github.com/SAP/go-hdb v1.7.4 github.com/docker/go-connections v0.5.0 github.com/go-sql-driver/mysql v1.7.1 github.com/lib/pq v1.10.9 @@ -150,13 +150,13 @@ require ( go.opentelemetry.io/otel/exporters/prometheus v0.44.1-0.20231201153405-6027c1ae76f2 // indirect go.opentelemetry.io/otel/sdk v1.21.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.21.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.16.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/term v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.16.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/receiver/sqlqueryreceiver/go.sum b/receiver/sqlqueryreceiver/go.sum index 13765bf605d5..edef415038aa 100644 --- a/receiver/sqlqueryreceiver/go.sum +++ b/receiver/sqlqueryreceiver/go.sum @@ -61,8 +61,8 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= -github.com/SAP/go-hdb v1.7.1 h1:sAo6RzmT4DrlAysVUy8cCatjBqvp25Q53I5fj6p/gF8= -github.com/SAP/go-hdb v1.7.1/go.mod h1:PZrY7nrl0HQPS/EL0FFXdy679wlW8unQ8sCTDzxTWbs= +github.com/SAP/go-hdb v1.7.4 h1:sLjur7axWA9gAfovQswlZeicnPxWm6WOEza+oScK9f0= +github.com/SAP/go-hdb v1.7.4/go.mod h1:v38PtG76h9ScNGJzPNdGhqBgwAdyeC9ICwDYRPwRbhw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -554,8 +554,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -566,8 +566,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e h1:723BNChdd0c2Wk6WOE320qGBiPtYx0F0Bbm1kriShfE= +golang.org/x/exp v0.0.0-20240110193028-0dcbfd608b1e/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -716,8 +716,8 @@ golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 14d43945cc2ac1569e63e5192a60ee3eb5f27aef Mon Sep 17 00:00:00 2001 From: Steven Swartz Date: Mon, 15 Jan 2024 21:20:50 -0500 Subject: [PATCH 17/17] Updates documentation on how to send a test metric to the statsd receiver (#30499) Updates the documentation on how to send a test metric to the statsd receiver, since the current command doesn't work on all machines. The issue is that the component lets the `net` package decide whether to listen for either IPV6 or IPV4 UDP packets. That decision seems dependent on the OS. If the server picks IPV4, and localhost resolves to an IPV6 address, then the packet is not received. This [stackoverflow](https://superuser.com/questions/1238038/trouble-with-netcat-over-udp) question helped me figure out the problem **Testing:** In my case, using macOS, the net library decides to use IPV4: ``` workspace/opentelemetry-collector-contrib - (improve_statsd_test_command_documentation) > lsof -i | grep 8125 ___go_bui 42575 sswartz 10u IPv4 0xa2b466eb54dcda69 0t0 UDP localhost:8125 ``` So only sending a IPV4 packet (using `-4`) works: ``` echo "test.metric:42|c|#myKey:myVal" | nc -w 1 -u -4 localhost 8125; ``` --- receiver/statsdreceiver/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/receiver/statsdreceiver/README.md b/receiver/statsdreceiver/README.md index 50124c748450..24847da1a282 100644 --- a/receiver/statsdreceiver/README.md +++ b/receiver/statsdreceiver/README.md @@ -166,4 +166,9 @@ service: A simple way to send a metric to `localhost:8125`: -`echo "test.metric:42|c|#myKey:myVal" | nc -w 1 -u localhost 8125` +```shell +echo "test.metric:42|c|#myKey:myVal" | nc -w 1 -u -4 localhost 8125; +echo "test.metric:42|c|#myKey:myVal" | nc -w 1 -u -6 localhost 8125; +``` + +Which sends a UDP packet using both IPV4 and IPV6, which is needed because the receiver's UDP server only accepts one or the other. \ No newline at end of file