From 7af0e72af36ed2ff4fb0a192d9aa1539a4051478 Mon Sep 17 00:00:00 2001 From: Priyanka Dhingra Date: Tue, 7 Jul 2026 23:45:57 +0000 Subject: [PATCH 1/3] ci: Update Go version in all workflows from 1.24.3 to 1.26.2 PR #1135 bumped Go from 1.24.0 to 1.26.2 in go.mod files (adot/collector/lambdacomponents, opentelemetry-lambda submodule). The GitHub Actions workflows still referenced Go ~1.24.3 via actions/setup-go, causing build/runtime failures in the soak tests because the installed Go toolchain was too old for the go directive. Update all 8 workflow files to use go-version: '~1.26.2' to match the project's go.mod requirements. --- .github/workflows/canary.yml | 2 +- .github/workflows/main-build-java.yml | 2 +- .github/workflows/main-build-nodejs.yml | 2 +- .github/workflows/main-build-python.yml | 2 +- .github/workflows/main-build.yml | 2 +- .github/workflows/pr-build.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/soaking.yml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 66cd13c4f..588c084c2 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -67,7 +67,7 @@ jobs: submodules: recursive - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-java@v4 if: ${{ matrix.language == 'java' }} diff --git a/.github/workflows/main-build-java.yml b/.github/workflows/main-build-java.yml index 126b762cb..d7817457d 100644 --- a/.github/workflows/main-build-java.yml +++ b/.github/workflows/main-build-java.yml @@ -85,7 +85,7 @@ jobs: submodules: recursive - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-java@v4 with: diff --git a/.github/workflows/main-build-nodejs.yml b/.github/workflows/main-build-nodejs.yml index d99e6534d..de4c816b7 100644 --- a/.github/workflows/main-build-nodejs.yml +++ b/.github/workflows/main-build-nodejs.yml @@ -30,7 +30,7 @@ jobs: submodules: recursive - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/main-build-python.yml b/.github/workflows/main-build-python.yml index b326316ee..cac1c010c 100644 --- a/.github/workflows/main-build-python.yml +++ b/.github/workflows/main-build-python.yml @@ -30,7 +30,7 @@ jobs: submodules: recursive - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-python@v5 with: diff --git a/.github/workflows/main-build.yml b/.github/workflows/main-build.yml index 7060250d1..6724552e5 100644 --- a/.github/workflows/main-build.yml +++ b/.github/workflows/main-build.yml @@ -40,7 +40,7 @@ jobs: submodules: recursive - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-dotnet@v4 if: ${{ matrix.language == 'dotnet' }} diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 66fc404bf..0f43d2393 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -24,7 +24,7 @@ jobs: submodules: true - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-java@v4 if: ${{ matrix.language == 'java' }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7385b0d9f..f1d360fac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -273,7 +273,7 @@ jobs: # above, always setup go 1.18. # if: ${{ env.TEST_LANGUAGE == 'go' }} with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - name: download layer tf file uses: actions/download-artifact@v4 diff --git a/.github/workflows/soaking.yml b/.github/workflows/soaking.yml index a17e6b662..e23a93028 100644 --- a/.github/workflows/soaking.yml +++ b/.github/workflows/soaking.yml @@ -67,7 +67,7 @@ jobs: submodules: recursive - uses: actions/setup-go@v5 with: - go-version: '~1.24.3' + go-version: '~1.26.2' check-latest: true - uses: actions/setup-java@v4 if: ${{ matrix.language == 'java' }} From 4774e0ad7df86a7cd89fc8a3487f93c8bf8fdcff Mon Sep 17 00:00:00 2001 From: Priyanka Dhingra Date: Wed, 8 Jul 2026 00:33:59 +0000 Subject: [PATCH 2/3] fix(nodejs): Repair soak-test terraform and expected trace for OTel v0.151.0 The OTel Collector v0.151.0 submodule bump introduced two nodejs-only breakages in the soak/integration tests: 1. Terraform "Unsupported argument": upstream nodejs/sample-apps/aws-sdk/deploy/wrapper was refactored to build layer ARNs internally from published layer versions and no longer accepts collector_layer_arn / sdk_layer_arn. Rework the integration test to instantiate terraform-aws-modules/lambda/aws + api-gateway-proxy directly and attach the locally-built layers, mirroring the python test. Go and Java deploy modules still accept the ARN inputs and are unchanged. 2. TraceValidator "data model not matched": the upstream nodejs sample app switched its AWS call from S3 ListBuckets to STS GetCallerIdentity. Update the expected trace template accordingly. Java/Go samples still use S3. sim: https://taskei.amazon.dev/tasks/PROMET-11975 --- .../nodejs-aws-sdk-wrapper.json | 9 +++- .../integration-tests/aws-sdk/wrapper/main.tf | 50 +++++++++++++++---- .../aws-sdk/wrapper/outputs.tf | 4 +- 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/adot/utils/expected-templates/nodejs-aws-sdk-wrapper.json b/adot/utils/expected-templates/nodejs-aws-sdk-wrapper.json index d0879b91f..6dcfff14d 100644 --- a/adot/utils/expected-templates/nodejs-aws-sdk-wrapper.json +++ b/adot/utils/expected-templates/nodejs-aws-sdk-wrapper.json @@ -12,6 +12,11 @@ "name": "lambda-nodejs.*" }, { - "name": "s3" + "name": "STS", + "origin": "AWS::STS", + "inferred": true, + "aws": { + "operation": "GetCallerIdentity" + } } -] \ No newline at end of file +] diff --git a/nodejs/integration-tests/aws-sdk/wrapper/main.tf b/nodejs/integration-tests/aws-sdk/wrapper/main.tf index c50596ec2..bcd94383f 100644 --- a/nodejs/integration-tests/aws-sdk/wrapper/main.tf +++ b/nodejs/integration-tests/aws-sdk/wrapper/main.tf @@ -19,22 +19,54 @@ resource "aws_lambda_layer_version" "collector_layer" { source_code_hash = filebase64sha256("${path.module}/../../../../opentelemetry-lambda/collector/build/opentelemetry-collector-layer-${local.architecture}.zip") } -module "hello-lambda-function" { - source = "../../../../opentelemetry-lambda/nodejs/sample-apps/aws-sdk/deploy/wrapper" +# NOTE: The upstream `nodejs/sample-apps/aws-sdk/deploy/wrapper` module was +# refactored (OTel Collector v0.151.0) to build layer ARNs internally from +# published layer versions and no longer accepts `collector_layer_arn` / +# `sdk_layer_arn` inputs. The integration/soak test must attach the layers we +# just built locally, so we instantiate the Lambda function directly here - +# mirroring the python integration test - instead of consuming that module. +module "test-function" { + source = "terraform-aws-modules/lambda/aws" + version = "7.19.0" + + architectures = compact([var.architecture]) + function_name = var.function_name + handler = "index.handler" + runtime = var.runtime + + create_package = false + local_existing_package = "${path.module}/../../../../opentelemetry-lambda/nodejs/sample-apps/aws-sdk/build/function.zip" + + memory_size = 384 + timeout = 20 + + layers = compact([ + var.enable_collector_layer ? aws_lambda_layer_version.collector_layer[0].arn : null, + aws_lambda_layer_version.sdk_layer.arn + ]) + + environment_variables = { + AWS_LAMBDA_EXEC_WRAPPER = "/opt/otel-handler" + } + + tracing_mode = var.tracing_mode +} + +module "api-gateway" { + source = "../../../../opentelemetry-lambda/utils/terraform/api-gateway-proxy" + name = var.function_name - architecture = var.architecture - collector_layer_arn = var.enable_collector_layer ? aws_lambda_layer_version.collector_layer[0].arn : null - sdk_layer_arn = aws_lambda_layer_version.sdk_layer.arn - tracing_mode = var.tracing_mode - runtime = var.runtime + function_name = module.test-function.lambda_function_name + function_invoke_arn = module.test-function.lambda_function_invoke_arn + enable_xray_tracing = var.tracing_mode == "Active" } resource "aws_iam_role_policy_attachment" "hello-lambda-cloudwatch-insights" { - role = module.hello-lambda-function.function_role_name + role = module.test-function.lambda_role_name policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" } resource "aws_iam_role_policy_attachment" "test_xray" { - role = module.hello-lambda-function.function_role_name + role = module.test-function.lambda_role_name policy_arn = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess" } diff --git a/nodejs/integration-tests/aws-sdk/wrapper/outputs.tf b/nodejs/integration-tests/aws-sdk/wrapper/outputs.tf index a40152815..9ef20e2ff 100644 --- a/nodejs/integration-tests/aws-sdk/wrapper/outputs.tf +++ b/nodejs/integration-tests/aws-sdk/wrapper/outputs.tf @@ -1,9 +1,9 @@ output "api-gateway-url" { - value = module.hello-lambda-function.api-gateway-url + value = module.api-gateway.api_gateway_url } output "function_role_name" { - value = module.hello-lambda-function.function_role_name + value = module.test-function.lambda_role_name } output "collector_layer_arn" { From b1cbf24055428de9196193e07ccb4a48345ed9b6 Mon Sep 17 00:00:00 2001 From: Priyanka Dhingra Date: Wed, 8 Jul 2026 01:44:19 +0000 Subject: [PATCH 3/3] fix(collector): remove deprecated telemetry.metrics.address for OTel v0.151.0 The collector v0.151.0 bump surfaced a runtime INIT/invoke failure across soak jobs: - java-agent: FUNCTION_ERROR_INIT_FAILURE during provisioned-concurrency warm-up (surfaces as the aws_lambda_provisioned_concurrency_config waiter erroring) - go/python/java wrappers: sample app returns HTTP 500, so no trace is produced and TraceValidator reports "data model not matched" Both paths share the collector extension. The ADOT config override retained `service.telemetry.metrics.address: localhost:8888`, a field deprecated in collector v0.123.0 and dropped by upstream in the v0.151.0 default config. Upstream opentelemetry-collector issue #3911 documents this field causing port conflicts and collector crashes, which would crash the Lambda extension and produce the observed INIT/invoke failures. Remove the telemetry block from the default ADOT collector config and the java-agent integration test's inline config to realign with upstream v0.151.0. NOT YET VERIFIED: soak cannot be run locally (deploys real Lambdas) and the failing run's CloudWatch logs were already torn down. A soak run is required to confirm this resolves the INIT failures. sim: https://taskei.amazon.dev/tasks/PROMET-11975 --- adot/collector/config.yaml | 3 --- java/integration-tests/aws-sdk/agent/main.tf | 3 --- 2 files changed, 6 deletions(-) diff --git a/adot/collector/config.yaml b/adot/collector/config.yaml index 195b2a678..4e252032e 100644 --- a/adot/collector/config.yaml +++ b/adot/collector/config.yaml @@ -18,6 +18,3 @@ service: metrics: receivers: [otlp] exporters: [debug] - telemetry: - metrics: - address: localhost:8888 diff --git a/java/integration-tests/aws-sdk/agent/main.tf b/java/integration-tests/aws-sdk/agent/main.tf index 51c913f1e..51f0e8d2c 100644 --- a/java/integration-tests/aws-sdk/agent/main.tf +++ b/java/integration-tests/aws-sdk/agent/main.tf @@ -79,9 +79,6 @@ service: metrics: receivers: [otlp] exporters: [debug, prometheusremotewrite] - telemetry: - metrics: - address: localhost:8888 EOT filename = "config.yaml" }