From 05cd916062f7c33a01a5c1e752dcbad296a34d58 Mon Sep 17 00:00:00 2001 From: Seth Levine Date: Wed, 19 Jul 2023 11:34:17 -0400 Subject: [PATCH 1/2] Revert "Revert "Allow Retry Of EC2MetadataError For IMDS" (#56)" This reverts commit 082d76a23ef387daae337a0135bc66f773b075de. --- .github/workflows/build-and-test.yml | 1 + cmd/configschema/go.mod | 2 +- cmd/otelcontribcol/exporters_test.go | 2 + cmd/otelcontribcol/go.mod | 2 +- exporter/awscloudwatchlogsexporter/go.mod | 2 +- exporter/awsemfexporter/go.mod | 2 +- exporter/awsxrayexporter/go.mod | 2 +- exporter/datadogexporter/config_test.go | 3 +- exporter/datadogexporter/go.mod | 5 +- exporter/datadogexporter/go.sum | 4 +- .../internal/hostmetadata/internal/ec2/ec2.go | 4 +- .../internal/hostmetadata/metadata_test.go | 2 + extension/awsproxy/go.mod | 3 +- extension/awsproxy/go.sum | 6 +- go.mod | 2 +- internal/aws/awsutil/conn.go | 3 +- internal/aws/awsutil/go.mod | 2 +- internal/aws/proxy/conn.go | 4 +- internal/aws/proxy/go.mod | 5 +- internal/aws/proxy/go.sum | 4 +- internal/aws/xray/go.mod | 2 +- internal/aws/xray/telemetry/sender.go | 4 +- .../metadataproviders/aws/ec2/metadata.go | 4 +- internal/metadataproviders/go.mod | 5 +- internal/metadataproviders/go.sum | 4 +- override/aws/go.mod | 2 + override/aws/go.sum | 5 ++ override/aws/imdsretryer.go | 65 ++++++++++++++ override/aws/imdsretryer_test.go | 90 +++++++++++++++++++ processor/resourcedetectionprocessor/go.mod | 3 +- processor/resourcedetectionprocessor/go.sum | 6 +- receiver/awscontainerinsightreceiver/go.mod | 2 +- .../internal/host/ec2metadata.go | 4 +- receiver/awsxrayreceiver/go.mod | 2 +- 34 files changed, 220 insertions(+), 38 deletions(-) create mode 100644 override/aws/imdsretryer.go create mode 100644 override/aws/imdsretryer_test.go diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 3cb3ed158ad1..1800643dc6c4 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -213,6 +213,7 @@ jobs: git diff --exit-code '.github/ISSUE_TEMPLATE' || (echo 'Dropdowns in issue templates are out of date, please run "make generate-gh-issue-templates" and commit the changes in this PR.' && exit 1) unittest-matrix: strategy: + fail-fast: false matrix: go-version: ["1.20", 1.19] # 1.20 is interpreted as 1.2 without quotes group: diff --git a/cmd/configschema/go.mod b/cmd/configschema/go.mod index bda107c422b6..7ca4781f9874 100644 --- a/cmd/configschema/go.mod +++ b/cmd/configschema/go.mod @@ -277,7 +277,7 @@ require ( github.com/alecthomas/participle/v2 v2.0.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/aliyun/aliyun-log-go-sdk v0.1.44 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/andybalholm/brotli v1.0.5 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect diff --git a/cmd/otelcontribcol/exporters_test.go b/cmd/otelcontribcol/exporters_test.go index d9bafb3796e0..3533577f6ee8 100644 --- a/cmd/otelcontribcol/exporters_test.go +++ b/cmd/otelcontribcol/exporters_test.go @@ -25,6 +25,7 @@ import ( "runtime" "testing" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" @@ -496,6 +497,7 @@ func TestDefaultExporters(t *testing.T) { expectedExporters[k] = struct{}{} } for _, tt := range tests { + override.IMDSRetryer = nil _, ok := expFactories[tt.exporter] if !ok { // not part of the distro, skipping. diff --git a/cmd/otelcontribcol/go.mod b/cmd/otelcontribcol/go.mod index 94b1c7a333c1..6a78b203d6e7 100644 --- a/cmd/otelcontribcol/go.mod +++ b/cmd/otelcontribcol/go.mod @@ -5,6 +5,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/cmd/otelcontrib go 1.19 require ( + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab github.com/open-telemetry/opentelemetry-collector-contrib/connector/countconnector v0.77.0 github.com/open-telemetry/opentelemetry-collector-contrib/connector/servicegraphconnector v0.77.0 github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.77.0 @@ -269,7 +270,6 @@ require ( github.com/alecthomas/participle/v2 v2.0.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/aliyun/aliyun-log-go-sdk v0.1.44 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect github.com/andybalholm/brotli v1.0.5 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect diff --git a/exporter/awscloudwatchlogsexporter/go.mod b/exporter/awscloudwatchlogsexporter/go.mod index d34914677f87..bf6eecc49972 100644 --- a/exporter/awscloudwatchlogsexporter/go.mod +++ b/exporter/awscloudwatchlogsexporter/go.mod @@ -19,7 +19,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect diff --git a/exporter/awsemfexporter/go.mod b/exporter/awsemfexporter/go.mod index 90e767c12849..3333e1c22e5f 100644 --- a/exporter/awsemfexporter/go.mod +++ b/exporter/awsemfexporter/go.mod @@ -24,7 +24,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/exporter/awsxrayexporter/go.mod b/exporter/awsxrayexporter/go.mod index dbadca4750bc..6712121516dd 100644 --- a/exporter/awsxrayexporter/go.mod +++ b/exporter/awsxrayexporter/go.mod @@ -18,7 +18,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/exporter/datadogexporter/config_test.go b/exporter/datadogexporter/config_test.go index f5d0e5385ddd..920730fab855 100644 --- a/exporter/datadogexporter/config_test.go +++ b/exporter/datadogexporter/config_test.go @@ -17,12 +17,13 @@ package datadogexporter import ( "testing" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/confmap" ) func TestValidate(t *testing.T) { - + override.IMDSRetryer = nil tests := []struct { name string cfg *Config diff --git a/exporter/datadogexporter/go.mod b/exporter/datadogexporter/go.mod index 0e9172523c99..f8a93d2ee81a 100644 --- a/exporter/datadogexporter/go.mod +++ b/exporter/datadogexporter/go.mod @@ -2,6 +2,8 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datado go 1.19 +replace github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws => ../../override/aws + require ( github.com/DataDog/agent-payload/v5 v5.0.83 github.com/DataDog/datadog-agent/pkg/trace v0.45.0-rc.4 @@ -12,7 +14,8 @@ require ( github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.2.0 github.com/DataDog/sketches-go v1.4.2 github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.13.1 - github.com/aws/aws-sdk-go v1.44.255 + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/aws/aws-sdk-go v1.44.293 github.com/cenkalti/backoff/v4 v4.2.1 github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.77.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.77.0 diff --git a/exporter/datadogexporter/go.sum b/exporter/datadogexporter/go.sum index 2cd0862862d9..55923e5f8947 100644 --- a/exporter/datadogexporter/go.sum +++ b/exporter/datadogexporter/go.sum @@ -111,8 +111,8 @@ github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= -github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= +github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= diff --git a/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go b/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go index 0419e6571bb6..1718bd490deb 100644 --- a/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go +++ b/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go @@ -22,8 +22,8 @@ import ( "sync" "github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes/source" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/ec2metadata" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2" @@ -65,7 +65,7 @@ func GetHostInfo(logger *zap.Logger) (hostInfo *HostInfo) { } meta := ec2metadata.New(sess, &aws.Config{ - Retryer: client.DefaultRetryer{NumMaxRetries: 5}, + Retryer: override.IMDSRetryer, }) if idDoc, err := meta.GetInstanceIdentityDocument(); err == nil { diff --git a/exporter/datadogexporter/internal/hostmetadata/metadata_test.go b/exporter/datadogexporter/internal/hostmetadata/metadata_test.go index 9708ba299b4e..6baa234cb263 100644 --- a/exporter/datadogexporter/internal/hostmetadata/metadata_test.go +++ b/exporter/datadogexporter/internal/hostmetadata/metadata_test.go @@ -25,6 +25,7 @@ import ( "github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes" "github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes/azure" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" @@ -64,6 +65,7 @@ var ( ) func TestFillHostMetadata(t *testing.T) { + override.IMDSRetryer = nil params := exportertest.NewNopCreateSettings() params.BuildInfo = mockBuildInfo diff --git a/extension/awsproxy/go.mod b/extension/awsproxy/go.mod index a7c0f8661475..f505e238b317 100644 --- a/extension/awsproxy/go.mod +++ b/extension/awsproxy/go.mod @@ -13,7 +13,8 @@ require ( ) require ( - github.com/aws/aws-sdk-go v1.44.255 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/aws/aws-sdk-go v1.44.293 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/extension/awsproxy/go.sum b/extension/awsproxy/go.sum index d12be5ae9075..fe591ab8e6e6 100644 --- a/extension/awsproxy/go.sum +++ b/extension/awsproxy/go.sum @@ -6,13 +6,15 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab h1:BoPFeUWtNBSdsVGHxd8RGxAV39OOsH94IDX/ZxEmTWY= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab/go.mod h1:b5uvbp31ZtSPEHt6fwnpycZpuk/vWB5sCPEQV+PITCI= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= -github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= +github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= diff --git a/go.mod b/go.mod index 29d787e372c0..73ccd6794b6f 100644 --- a/go.mod +++ b/go.mod @@ -257,7 +257,7 @@ require ( github.com/alecthomas/participle/v2 v2.0.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/aliyun/aliyun-log-go-sdk v0.1.44 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/andybalholm/brotli v1.0.5 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect diff --git a/internal/aws/awsutil/conn.go b/internal/aws/awsutil/conn.go index 796fc3b3bda2..67e567526db6 100644 --- a/internal/aws/awsutil/conn.go +++ b/internal/aws/awsutil/conn.go @@ -26,7 +26,6 @@ import ( override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/credentials/stscreds" "github.com/aws/aws-sdk-go/aws/defaults" @@ -48,7 +47,7 @@ type Conn struct{} func (c *Conn) getEC2Region(s *session.Session) (string, error) { return ec2metadata.New(s, &aws.Config{ - Retryer: client.DefaultRetryer{NumMaxRetries: 5}, + Retryer: override.IMDSRetryer, }).Region() } diff --git a/internal/aws/awsutil/go.mod b/internal/aws/awsutil/go.mod index c604d6874f8e..12df047113c7 100644 --- a/internal/aws/awsutil/go.mod +++ b/internal/aws/awsutil/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/aw go 1.19 require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab github.com/aws/aws-sdk-go v1.44.293 github.com/stretchr/testify v1.8.2 go.uber.org/zap v1.24.0 diff --git a/internal/aws/proxy/conn.go b/internal/aws/proxy/conn.go index e28039f50bf5..64b7289dc58d 100644 --- a/internal/aws/proxy/conn.go +++ b/internal/aws/proxy/conn.go @@ -25,10 +25,10 @@ import ( "strings" "time" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/arn" "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/credentials/stscreds" "github.com/aws/aws-sdk-go/aws/ec2metadata" @@ -81,7 +81,7 @@ var newAWSSession = func(roleArn string, region string, log *zap.Logger) (*sessi var getEC2Region = func(s *session.Session) (string, error) { return ec2metadata.New(s, &aws.Config{ - Retryer: client.DefaultRetryer{NumMaxRetries: 5}, + Retryer: override.IMDSRetryer, }).Region() } diff --git a/internal/aws/proxy/go.mod b/internal/aws/proxy/go.mod index 2ab5f68b1e99..73125bf25b8d 100644 --- a/internal/aws/proxy/go.mod +++ b/internal/aws/proxy/go.mod @@ -2,8 +2,11 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/pr go 1.19 +replace github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws => ../../../override/aws + require ( - github.com/aws/aws-sdk-go v1.44.255 + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/aws/aws-sdk-go v1.44.293 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.77.0 github.com/stretchr/testify v1.8.2 go.opentelemetry.io/collector v0.77.0 diff --git a/internal/aws/proxy/go.sum b/internal/aws/proxy/go.sum index 05fd5271af77..1ed89027f5e9 100644 --- a/internal/aws/proxy/go.sum +++ b/internal/aws/proxy/go.sum @@ -1,5 +1,5 @@ -github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= -github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= +github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/internal/aws/xray/go.mod b/internal/aws/xray/go.mod index 2d2b37a017ec..ad603fa7c0f8 100644 --- a/internal/aws/xray/go.mod +++ b/internal/aws/xray/go.mod @@ -3,6 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xr go 1.19 require ( + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab github.com/aws/aws-sdk-go v1.44.293 github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.77.0 github.com/stretchr/testify v1.8.2 @@ -11,7 +12,6 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect diff --git a/internal/aws/xray/telemetry/sender.go b/internal/aws/xray/telemetry/sender.go index 8ca5117e1ecd..97f3fa99aaba 100644 --- a/internal/aws/xray/telemetry/sender.go +++ b/internal/aws/xray/telemetry/sender.go @@ -19,8 +19,8 @@ import ( "sync" "time" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/ec2metadata" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/xray" @@ -190,7 +190,7 @@ func ToOptions(cfg Config, sess *session.Session, settings *awsutil.AWSSessionSe } if !settings.LocalMode { metadataClient := ec2metadata.New(sess, &aws.Config{ - Retryer: client.DefaultRetryer{NumMaxRetries: 5}, + Retryer: override.IMDSRetryer, }) hostnameProviders = append(hostnameProviders, ec2MetadataProvider{ client: metadataClient, diff --git a/internal/metadataproviders/aws/ec2/metadata.go b/internal/metadataproviders/aws/ec2/metadata.go index 42fa382de48a..38fd6ac10fb6 100644 --- a/internal/metadataproviders/aws/ec2/metadata.go +++ b/internal/metadataproviders/aws/ec2/metadata.go @@ -17,8 +17,8 @@ package ec2 // import "github.com/open-telemetry/opentelemetry-collector-contrib import ( "context" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/ec2metadata" "github.com/aws/aws-sdk-go/aws/session" ) @@ -38,7 +38,7 @@ var _ Provider = (*metadataClient)(nil) func NewProvider(sess *session.Session) Provider { return &metadataClient{ metadata: ec2metadata.New(sess, &aws.Config{ - Retryer: client.DefaultRetryer{NumMaxRetries: 5}, + Retryer: override.IMDSRetryer, }), } } diff --git a/internal/metadataproviders/go.mod b/internal/metadataproviders/go.mod index 4724229a680d..8a5892a113f4 100644 --- a/internal/metadataproviders/go.mod +++ b/internal/metadataproviders/go.mod @@ -2,9 +2,12 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/internal/metada go 1.19 +replace github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws => ../../override/aws + require ( github.com/Showmax/go-fqdn v1.0.0 - github.com/aws/aws-sdk-go v1.44.255 + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/aws/aws-sdk-go v1.44.293 github.com/docker/docker v23.0.5+incompatible github.com/hashicorp/consul/api v1.20.0 github.com/panta/machineid v1.0.2 diff --git a/internal/metadataproviders/go.sum b/internal/metadataproviders/go.sum index aed02fd3da16..d1b243ed4592 100644 --- a/internal/metadataproviders/go.sum +++ b/internal/metadataproviders/go.sum @@ -15,8 +15,8 @@ github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8 github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= -github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= +github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= diff --git a/override/aws/go.mod b/override/aws/go.mod index 8278a1149a2e..a4485906afc5 100644 --- a/override/aws/go.mod +++ b/override/aws/go.mod @@ -3,3 +3,5 @@ module github.com/amazon-contributing/opentelemetry-collector-contrib/override/a go 1.19 require github.com/aws/aws-sdk-go v1.44.293 + +require github.com/jmespath/go-jmespath v0.4.0 // indirect diff --git a/override/aws/go.sum b/override/aws/go.sum index 39aa96492e46..f474cb9f899f 100644 --- a/override/aws/go.sum +++ b/override/aws/go.sum @@ -1,9 +1,13 @@ github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -34,4 +38,5 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/override/aws/imdsretryer.go b/override/aws/imdsretryer.go new file mode 100644 index 000000000000..ba3600528804 --- /dev/null +++ b/override/aws/imdsretryer.go @@ -0,0 +1,65 @@ +// Copyright The OpenTelemetry Authors +// Portions of this file Copyright 2018-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aws // import "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" + +import ( + "time" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/request" +) + +// IMDSRetryer this must implement request.Retryer +// not sure how to make in a test context not to retry +// this seems to only be an issue on mac +// windows and linux do not have this issue +// in text context do not try to retry +// this causes timeout failures for mac unit tests +// currently we set the var to nil in tests to mock +var IMDSRetryer request.Retryer = newIMDSRetryer() + +type iMDSRetryer struct { + client.DefaultRetryer +} + +// newIMDSRetryer allows us to retry imds errors +// 2 imds calls 1 for hostname 1 for doc +// 2 calls 1 for imdsv2 1 for imdsv1 +// 2 seconds 4 seconds 8 seconds 16 seconds 32 seconds = 1 minute 2 seconds +// total is 4 minutes 8 seconds +// random jitter is applied of half the retry time +// max retry total time is 6 minutes 12 seconds +// min retry total time is 2 minutes 4 seconds +func newIMDSRetryer() iMDSRetryer { + return iMDSRetryer{ + DefaultRetryer: client.DefaultRetryer{ + NumMaxRetries: 5, + MinRetryDelay: 2 * time.Second, + }, + } +} + +func (r iMDSRetryer) ShouldRetry(req *request.Request) bool { + // there is no enum of error codes + // EC2MetadataError is not retryable by default + // Fallback to SDK's built in retry rules + shouldRetry := false + if awsError, ok := req.Error.(awserr.Error); r.DefaultRetryer.ShouldRetry(req) || (ok && awsError != nil && awsError.Code() == "EC2MetadataError") { + shouldRetry = true + } + return shouldRetry +} diff --git a/override/aws/imdsretryer_test.go b/override/aws/imdsretryer_test.go new file mode 100644 index 000000000000..59214af2c309 --- /dev/null +++ b/override/aws/imdsretryer_test.go @@ -0,0 +1,90 @@ +// Copyright The OpenTelemetry Authors +// Portions of this file Copyright 2018-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aws // import "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" + +import ( + "errors" + "net/http" + "testing" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" +) + +func Test_IMDSRetryer_ShouldRetry(t *testing.T) { + tests := []struct { + name string + req *request.Request + want bool + }{ + { + name: "ErrorIsNilDoNotRetry", + req: &request.Request{ + Error: nil, + }, + want: false, + }, + { + // no enum for status codes in request.Request nor http.Response + name: "ErrorIsDefaultRetryable", + req: &request.Request{ + Error: awserr.New("throttle me for 503", "throttle me for 503", nil), + HTTPResponse: &http.Response{ + StatusCode: 503, + }, + }, + want: true, + }, + { + name: "ErrorIsEC2MetadataErrorRetryable", + req: &request.Request{ + Error: awserr.New("EC2MetadataError", "EC2MetadataError", nil), + }, + want: true, + }, + { + name: "ErrorIsAWSOtherErrorNotRetryable", + req: &request.Request{ + Error: awserr.New("other", "other", nil), + }, + want: false, + }, + { + // errors.New as a parent error will always retry due to fallback + name: "ErrorIsAWSOtherWithParentErrorRetryable", + req: &request.Request{ + Error: awserr.New("other", "other", errors.New("other")), + }, + want: true, + }, + { + // errors.New will always retry due to fallback + name: "ErrorIsOtherErrorRetryable", + req: &request.Request{ + Error: errors.New("other"), + }, + want: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := IMDSRetryer + if got := r.ShouldRetry(tt.req); got != tt.want { + t.Errorf("ShouldRetry() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/processor/resourcedetectionprocessor/go.mod b/processor/resourcedetectionprocessor/go.mod index fb1f46ae2d23..cd585c5cef10 100644 --- a/processor/resourcedetectionprocessor/go.mod +++ b/processor/resourcedetectionprocessor/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( cloud.google.com/go/compute/metadata v0.2.3 github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.13.1 - github.com/aws/aws-sdk-go v1.44.255 + github.com/aws/aws-sdk-go v1.44.293 github.com/hashicorp/consul/api v1.20.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.77.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.77.0 @@ -27,6 +27,7 @@ require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/armon/go-metrics v0.3.10 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/processor/resourcedetectionprocessor/go.sum b/processor/resourcedetectionprocessor/go.sum index c0b6e7d96f26..aeb3f230ddcc 100644 --- a/processor/resourcedetectionprocessor/go.sum +++ b/processor/resourcedetectionprocessor/go.sum @@ -19,6 +19,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab h1:BoPFeUWtNBSdsVGHxd8RGxAV39OOsH94IDX/ZxEmTWY= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab/go.mod h1:b5uvbp31ZtSPEHt6fwnpycZpuk/vWB5sCPEQV+PITCI= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -26,8 +28,8 @@ github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8 github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-sdk-go v1.44.255 h1:tOd7OP5V6BeHhANksc7CFB/ILS2mHj3kRhTfZKFnsS0= -github.com/aws/aws-sdk-go v1.44.255/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.293 h1:oBPrQqsyMYe61Sl/xKVvQFflXjPwYH11aKi8QR3Nhts= +github.com/aws/aws-sdk-go v1.44.293/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= diff --git a/receiver/awscontainerinsightreceiver/go.mod b/receiver/awscontainerinsightreceiver/go.mod index 5588ad2abb41..abd15e64719a 100644 --- a/receiver/awscontainerinsightreceiver/go.mod +++ b/receiver/awscontainerinsightreceiver/go.mod @@ -3,6 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscon go 1.19 require ( + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab github.com/aws/aws-sdk-go v1.44.293 github.com/go-kit/log v0.2.1 github.com/google/cadvisor v0.47.1 @@ -44,7 +45,6 @@ require ( github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect diff --git a/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go b/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go index d83f602e06de..3a6975aab35e 100644 --- a/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go +++ b/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go @@ -18,8 +18,8 @@ import ( "context" "time" + override "github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" awsec2metadata "github.com/aws/aws-sdk-go/aws/ec2metadata" "github.com/aws/aws-sdk-go/aws/session" "go.uber.org/zap" @@ -55,7 +55,7 @@ func newEC2Metadata(ctx context.Context, session *session.Session, refreshInterv instanceIDReadyC chan bool, instanceIPReadyC chan bool, localMode bool, logger *zap.Logger, options ...ec2MetadataOption) ec2MetadataProvider { emd := &ec2Metadata{ client: awsec2metadata.New(session, &aws.Config{ - Retryer: client.DefaultRetryer{NumMaxRetries: 5}, + Retryer: override.IMDSRetryer, }), refreshInterval: refreshInterval, instanceIDReadyC: instanceIDReadyC, diff --git a/receiver/awsxrayreceiver/go.mod b/receiver/awsxrayreceiver/go.mod index 8a44aaca1eb7..f11a2f59ba6e 100644 --- a/receiver/awsxrayreceiver/go.mod +++ b/receiver/awsxrayreceiver/go.mod @@ -25,7 +25,7 @@ require ( require ( contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230712194013-e85dd5f17ce4 // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect From 8ed5eeaccb32764e6c990a8db4e8568ba8e07722 Mon Sep 17 00:00:00 2001 From: Seth Levine Date: Wed, 19 Jul 2023 11:46:34 -0400 Subject: [PATCH 2/2] Add Cancel To Context For IMDS Retry To Prevent ECS Hanging Issue R --- cmd/configschema/go.mod | 2 +- cmd/otelcontribcol/go.mod | 2 +- exporter/awscloudwatchlogsexporter/go.mod | 2 +- exporter/awsemfexporter/go.mod | 2 +- exporter/awsxrayexporter/go.mod | 2 +- exporter/datadogexporter/go.mod | 2 +- .../internal/hostmetadata/internal/ec2/ec2.go | 7 +++++-- extension/awsproxy/go.mod | 2 +- extension/awsproxy/go.sum | 4 ++-- go.mod | 2 +- internal/aws/awsutil/conn.go | 5 ++++- internal/aws/awsutil/go.mod | 2 +- internal/aws/proxy/conn.go | 5 ++++- internal/aws/proxy/go.mod | 2 +- internal/aws/xray/go.mod | 2 +- internal/aws/xray/telemetry/sender.go | 5 ++++- internal/metadataproviders/aws/ec2/metadata.go | 12 +++++++++--- internal/metadataproviders/go.mod | 2 +- override/aws/imdsretryer.go | 4 ++++ processor/resourcedetectionprocessor/go.mod | 2 +- processor/resourcedetectionprocessor/go.sum | 4 ++-- receiver/awscontainerinsightreceiver/go.mod | 2 +- .../internal/host/ec2metadata.go | 4 +++- receiver/awsxrayreceiver/go.mod | 2 +- 24 files changed, 52 insertions(+), 28 deletions(-) diff --git a/cmd/configschema/go.mod b/cmd/configschema/go.mod index 7ca4781f9874..b8e2f4134dee 100644 --- a/cmd/configschema/go.mod +++ b/cmd/configschema/go.mod @@ -277,7 +277,7 @@ require ( github.com/alecthomas/participle/v2 v2.0.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/aliyun/aliyun-log-go-sdk v0.1.44 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/andybalholm/brotli v1.0.5 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect diff --git a/cmd/otelcontribcol/go.mod b/cmd/otelcontribcol/go.mod index 6a78b203d6e7..0f84e70c0f10 100644 --- a/cmd/otelcontribcol/go.mod +++ b/cmd/otelcontribcol/go.mod @@ -5,7 +5,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/cmd/otelcontrib go 1.19 require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/open-telemetry/opentelemetry-collector-contrib/connector/countconnector v0.77.0 github.com/open-telemetry/opentelemetry-collector-contrib/connector/servicegraphconnector v0.77.0 github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.77.0 diff --git a/exporter/awscloudwatchlogsexporter/go.mod b/exporter/awscloudwatchlogsexporter/go.mod index bf6eecc49972..85084d0eb69b 100644 --- a/exporter/awscloudwatchlogsexporter/go.mod +++ b/exporter/awscloudwatchlogsexporter/go.mod @@ -19,7 +19,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect diff --git a/exporter/awsemfexporter/go.mod b/exporter/awsemfexporter/go.mod index 3333e1c22e5f..3844b82dae51 100644 --- a/exporter/awsemfexporter/go.mod +++ b/exporter/awsemfexporter/go.mod @@ -24,7 +24,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/exporter/awsxrayexporter/go.mod b/exporter/awsxrayexporter/go.mod index 6712121516dd..9de9925e1c8a 100644 --- a/exporter/awsxrayexporter/go.mod +++ b/exporter/awsxrayexporter/go.mod @@ -18,7 +18,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/exporter/datadogexporter/go.mod b/exporter/datadogexporter/go.mod index f8a93d2ee81a..54f2b5e14d93 100644 --- a/exporter/datadogexporter/go.mod +++ b/exporter/datadogexporter/go.mod @@ -14,7 +14,7 @@ require ( github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.2.0 github.com/DataDog/sketches-go v1.4.2 github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.13.1 - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/aws/aws-sdk-go v1.44.293 github.com/cenkalti/backoff/v4 v4.2.1 github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.77.0 diff --git a/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go b/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go index 1718bd490deb..9a29a52eb672 100644 --- a/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go +++ b/exporter/datadogexporter/internal/hostmetadata/internal/ec2/ec2.go @@ -64,17 +64,20 @@ func GetHostInfo(logger *zap.Logger) (hostInfo *HostInfo) { return } + ctx, cancel := context.WithTimeout(context.Background(), 2*override.TimePerCall) + defer cancel() + meta := ec2metadata.New(sess, &aws.Config{ Retryer: override.IMDSRetryer, }) - if idDoc, err := meta.GetInstanceIdentityDocument(); err == nil { + if idDoc, err := meta.GetInstanceIdentityDocumentWithContext(ctx); err == nil { hostInfo.InstanceID = idDoc.InstanceID } else { logger.Warn("Failed to get EC2 instance id document", zap.Error(err)) } - if ec2Hostname, err := meta.GetMetadata("hostname"); err == nil { + if ec2Hostname, err := meta.GetMetadataWithContext(ctx, "hostname"); err == nil { hostInfo.EC2Hostname = ec2Hostname } else { logger.Warn("Failed to get EC2 hostname", zap.Error(err)) diff --git a/extension/awsproxy/go.mod b/extension/awsproxy/go.mod index f505e238b317..17908594663b 100644 --- a/extension/awsproxy/go.mod +++ b/extension/awsproxy/go.mod @@ -13,7 +13,7 @@ require ( ) require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/aws/aws-sdk-go v1.44.293 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect diff --git a/extension/awsproxy/go.sum b/extension/awsproxy/go.sum index fe591ab8e6e6..afcddc1fa813 100644 --- a/extension/awsproxy/go.sum +++ b/extension/awsproxy/go.sum @@ -6,8 +6,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab h1:BoPFeUWtNBSdsVGHxd8RGxAV39OOsH94IDX/ZxEmTWY= -github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab/go.mod h1:b5uvbp31ZtSPEHt6fwnpycZpuk/vWB5sCPEQV+PITCI= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 h1:i3GjuFxiyGNNqkDFg/yHoYRimxw1iYKPFcohmT71AKk= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2/go.mod h1:b5uvbp31ZtSPEHt6fwnpycZpuk/vWB5sCPEQV+PITCI= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= diff --git a/go.mod b/go.mod index 73ccd6794b6f..bac19a5b7dff 100644 --- a/go.mod +++ b/go.mod @@ -257,7 +257,7 @@ require ( github.com/alecthomas/participle/v2 v2.0.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/aliyun/aliyun-log-go-sdk v0.1.44 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/andybalholm/brotli v1.0.5 // indirect github.com/antonmedv/expr v1.12.5 // indirect github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect diff --git a/internal/aws/awsutil/conn.go b/internal/aws/awsutil/conn.go index 67e567526db6..d1e01bc91c6b 100644 --- a/internal/aws/awsutil/conn.go +++ b/internal/aws/awsutil/conn.go @@ -16,6 +16,7 @@ package awsutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil" import ( + "context" "crypto/tls" "errors" "net/http" @@ -46,9 +47,11 @@ type ConnAttr interface { type Conn struct{} func (c *Conn) getEC2Region(s *session.Session) (string, error) { + ctx, cancel := context.WithTimeout(context.Background(), override.TimePerCall) + defer cancel() return ec2metadata.New(s, &aws.Config{ Retryer: override.IMDSRetryer, - }).Region() + }).RegionWithContext(ctx) } // AWS STS endpoint constants diff --git a/internal/aws/awsutil/go.mod b/internal/aws/awsutil/go.mod index 12df047113c7..a8271b7e1584 100644 --- a/internal/aws/awsutil/go.mod +++ b/internal/aws/awsutil/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/aw go 1.19 require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/aws/aws-sdk-go v1.44.293 github.com/stretchr/testify v1.8.2 go.uber.org/zap v1.24.0 diff --git a/internal/aws/proxy/conn.go b/internal/aws/proxy/conn.go index 64b7289dc58d..b4d7647ae4f9 100644 --- a/internal/aws/proxy/conn.go +++ b/internal/aws/proxy/conn.go @@ -15,6 +15,7 @@ package proxy // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy" import ( + "context" "crypto/tls" "encoding/json" "errors" @@ -80,9 +81,11 @@ var newAWSSession = func(roleArn string, region string, log *zap.Logger) (*sessi } var getEC2Region = func(s *session.Session) (string, error) { + ctx, cancel := context.WithTimeout(context.Background(), override.TimePerCall) + defer cancel() return ec2metadata.New(s, &aws.Config{ Retryer: override.IMDSRetryer, - }).Region() + }).RegionWithContext(ctx) } func getAWSConfigSession(c *Config, logger *zap.Logger) (*aws.Config, *session.Session, error) { diff --git a/internal/aws/proxy/go.mod b/internal/aws/proxy/go.mod index 73125bf25b8d..eb4915867ef8 100644 --- a/internal/aws/proxy/go.mod +++ b/internal/aws/proxy/go.mod @@ -5,7 +5,7 @@ go 1.19 replace github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws => ../../../override/aws require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/aws/aws-sdk-go v1.44.293 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.77.0 github.com/stretchr/testify v1.8.2 diff --git a/internal/aws/xray/go.mod b/internal/aws/xray/go.mod index ad603fa7c0f8..bc829266afbd 100644 --- a/internal/aws/xray/go.mod +++ b/internal/aws/xray/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xr go 1.19 require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/aws/aws-sdk-go v1.44.293 github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil v0.77.0 github.com/stretchr/testify v1.8.2 diff --git a/internal/aws/xray/telemetry/sender.go b/internal/aws/xray/telemetry/sender.go index 97f3fa99aaba..a4bd5aa0506c 100644 --- a/internal/aws/xray/telemetry/sender.go +++ b/internal/aws/xray/telemetry/sender.go @@ -15,6 +15,7 @@ package telemetry // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray/telemetry" import ( + "context" "os" "sync" "time" @@ -169,7 +170,9 @@ type ec2MetadataProvider struct { func (p ec2MetadataProvider) get() string { var metadata string - if result, err := p.client.GetMetadata(p.metadataKey); err == nil { + ctx, cancel := context.WithTimeout(context.Background(), override.TimePerCall) + defer cancel() + if result, err := p.client.GetMetadataWithContext(ctx, p.metadataKey); err == nil { metadata = result } return metadata diff --git a/internal/metadataproviders/aws/ec2/metadata.go b/internal/metadataproviders/aws/ec2/metadata.go index 38fd6ac10fb6..75ba58a3ee74 100644 --- a/internal/metadataproviders/aws/ec2/metadata.go +++ b/internal/metadataproviders/aws/ec2/metadata.go @@ -44,13 +44,19 @@ func NewProvider(sess *session.Session) Provider { } func (c *metadataClient) InstanceID(ctx context.Context) (string, error) { - return c.metadata.GetMetadataWithContext(ctx, "instance-id") + childCtx, cancel := context.WithTimeout(ctx, override.TimePerCall) + defer cancel() + return c.metadata.GetMetadataWithContext(childCtx, "instance-id") } func (c *metadataClient) Hostname(ctx context.Context) (string, error) { - return c.metadata.GetMetadataWithContext(ctx, "hostname") + childCtx, cancel := context.WithTimeout(ctx, override.TimePerCall) + defer cancel() + return c.metadata.GetMetadataWithContext(childCtx, "hostname") } func (c *metadataClient) Get(ctx context.Context) (ec2metadata.EC2InstanceIdentityDocument, error) { - return c.metadata.GetInstanceIdentityDocumentWithContext(ctx) + childCtx, cancel := context.WithTimeout(ctx, override.TimePerCall) + defer cancel() + return c.metadata.GetInstanceIdentityDocumentWithContext(childCtx) } diff --git a/internal/metadataproviders/go.mod b/internal/metadataproviders/go.mod index 8a5892a113f4..6c86fdb15809 100644 --- a/internal/metadataproviders/go.mod +++ b/internal/metadataproviders/go.mod @@ -6,7 +6,7 @@ replace github.com/amazon-contributing/opentelemetry-collector-contrib/override/ require ( github.com/Showmax/go-fqdn v1.0.0 - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/aws/aws-sdk-go v1.44.293 github.com/docker/docker v23.0.5+incompatible github.com/hashicorp/consul/api v1.20.0 diff --git a/override/aws/imdsretryer.go b/override/aws/imdsretryer.go index ba3600528804..483766053455 100644 --- a/override/aws/imdsretryer.go +++ b/override/aws/imdsretryer.go @@ -32,6 +32,10 @@ import ( // currently we set the var to nil in tests to mock var IMDSRetryer request.Retryer = newIMDSRetryer() +const ( + TimePerCall = 2 * time.Minute +) + type iMDSRetryer struct { client.DefaultRetryer } diff --git a/processor/resourcedetectionprocessor/go.mod b/processor/resourcedetectionprocessor/go.mod index cd585c5cef10..3f063a5f0f2c 100644 --- a/processor/resourcedetectionprocessor/go.mod +++ b/processor/resourcedetectionprocessor/go.mod @@ -27,7 +27,7 @@ require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/armon/go-metrics v0.3.10 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/processor/resourcedetectionprocessor/go.sum b/processor/resourcedetectionprocessor/go.sum index aeb3f230ddcc..6863404880c9 100644 --- a/processor/resourcedetectionprocessor/go.sum +++ b/processor/resourcedetectionprocessor/go.sum @@ -19,8 +19,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab h1:BoPFeUWtNBSdsVGHxd8RGxAV39OOsH94IDX/ZxEmTWY= -github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab/go.mod h1:b5uvbp31ZtSPEHt6fwnpycZpuk/vWB5sCPEQV+PITCI= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 h1:i3GjuFxiyGNNqkDFg/yHoYRimxw1iYKPFcohmT71AKk= +github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2/go.mod h1:b5uvbp31ZtSPEHt6fwnpycZpuk/vWB5sCPEQV+PITCI= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= diff --git a/receiver/awscontainerinsightreceiver/go.mod b/receiver/awscontainerinsightreceiver/go.mod index abd15e64719a..c8d10b5e5ddf 100644 --- a/receiver/awscontainerinsightreceiver/go.mod +++ b/receiver/awscontainerinsightreceiver/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscon go 1.19 require ( - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 github.com/aws/aws-sdk-go v1.44.293 github.com/go-kit/log v0.2.1 github.com/google/cadvisor v0.47.1 diff --git a/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go b/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go index 3a6975aab35e..fc9f67035814 100644 --- a/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go +++ b/receiver/awscontainerinsightreceiver/internal/host/ec2metadata.go @@ -85,7 +85,9 @@ func (emd *ec2Metadata) refresh(ctx context.Context) { } emd.logger.Info("Fetch instance id and type from ec2 metadata") - doc, err := emd.client.GetInstanceIdentityDocumentWithContext(ctx) + childCtx, cancel := context.WithTimeout(ctx, override.TimePerCall) + defer cancel() + doc, err := emd.client.GetInstanceIdentityDocumentWithContext(childCtx) if err != nil { emd.logger.Error("Failed to get ec2 metadata", zap.Error(err)) return diff --git a/receiver/awsxrayreceiver/go.mod b/receiver/awsxrayreceiver/go.mod index f11a2f59ba6e..a37bd3a240e5 100644 --- a/receiver/awsxrayreceiver/go.mod +++ b/receiver/awsxrayreceiver/go.mod @@ -25,7 +25,7 @@ require ( require ( contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect - github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230714201444-77612b3cbeab // indirect + github.com/amazon-contributing/opentelemetry-collector-contrib/override/aws v0.0.0-20230719154634-7dfcb28377c2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect