Skip to content

Nightly dependency update: OpenTelemetry 2.32.0/1.61.0 - #1462

Merged
vastin merged 8 commits into
mainfrom
nightly-dependency-updates
Oct 16, 2026
Merged

vastin merged 8 commits into
mainfrom
nightly-dependency-updates

Conversation

@aws-application-signals-bot

@aws-application-signals-bot aws-application-signals-bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

Automated update of OpenTelemetry dependencies.

Build Status: ❌ failure

Updated versions:

Upstream releases with breaking changes:
Note: the mechanism to detect upstream breaking changes is not perfect. Be sure to check all new releases and understand if any additional changes need to be addressed.

opentelemetry-java-instrumentation:

opentelemetry-java-contrib:

@aws-application-signals-bot
aws-application-signals-bot requested a review from a team as a code owner October 4, 2026 05:15
@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Claude finished @aws-application-signals-bot's task in 21s —— View job


Claude Code Review

  • Fetch prior review comments (none found)
  • Review PR diff
  • Analyze changes

Review Summary

This is a routine nightly dependency bump:

  • .github/patches/versions: OTEL_JAVA_INSTRUMENTATION_VERSION v2.31.1 → v2.32.0
  • dependencyManagement/build.gradle.kts: otelVersion 2.31.1 → 2.32.0 and otelSnapshotVersion 2.32.0 → 2.33.0

The version strings are consistent across both files and the snapshot version is correctly incremented one minor ahead of the stable version, matching the existing pattern. No code logic changes.

Note: The linked CI run is reported as failing. The diff itself is sound, so the failure is likely from upstream instrumentation changes in v2.32.0 (muzzle / contract-test / smoke-test fallout) rather than from the version bump edits themselves. A maintainer should check the CI logs to confirm whether any adapter code needs adjustment for v2.32.0.

No new substantive issues to flag on the diff.

@aws-application-signals-bot aws-application-signals-bot changed the title Nightly dependency update: OpenTelemetry 2.32.0/1.60.0 Nightly dependency update: OpenTelemetry 2.32.0/1.61.0 Oct 9, 2026
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Claude finished @vastin's task in 26s —— View job


Claude Code Review

  • Fetch prior review comments (none found)
  • Review PR diff
  • Analyze changes

Review Summary

Routine nightly dependency bump — version strings are consistent and correctly structured:

  • .github/patches/versions: OTEL_JAVA_INSTRUMENTATION_VERSION v2.31.1 → v2.32.0, OTEL_JAVA_CONTRIB_VERSION v1.60.0 → v1.61.0.
  • dependencyManagement/build.gradle.kts: otelVersion 2.31.1 → 2.32.0, otelSnapshotVersion 2.32.0 → 2.33.0 (snapshot correctly one minor ahead of stable, matching the existing pattern).
  • Contrib artifacts (opentelemetry-aws-xray, opentelemetry-aws-resources) bumped to 1.61.0 in lockstep with the contrib version.

No code logic changes, no new substantive issues to flag on the diff itself.

Note: The linked CI run is reported as failing. The diff itself is sound, so any failure is likely from upstream instrumentation changes in v2.32.0 (muzzle / contract-test / smoke-test fallout) rather than from the version bump edits. A maintainer should review the CI logs to determine whether adapter code needs adjustment for v2.32.0.
| Branch: nightly-dependency-updates

- contrib patch: bump version.gradle.kts hunk to 1.61.0-adot1.
- lambda aws-otel-java-instrumentation patch: bump otelVersion to
  2.32.0-adot-lambda1.
- lambda opentelemetry-java-instrumentation patch: rebase onto v2.32.0.
  Upstream added its own getXrayTraceId() lookup to
  AwsLambdaFunctionInstrumenter; keep ADOT's ParentContextExtractor
  (which also falls back to the system property / env var) in place of
  it. Port the extract(lambdaRequest, context) call into the rewritten
  events-2.2 SQS advice, and point upstream's new
  useXrayTraceIdFromAwsContext test at the ADOT extract path.
…h targets

Upstream 2.32.0 changed JmxMetricInsightInstaller to only load its
built-in target systems; it no longer resolves otel.jmx.target.system
entries to jmx/rules/<target>.yaml on the classpath. The ADOT-only
kafka, kafka-consumer, and kafka-producer rules were therefore silently
ignored ("JMX target system kafka is not supported"), and the Kafka JMX
contract tests timed out waiting for metrics.

Add AwsJmxRulesInstaller, an AgentListener that reads the same jmx
config as the upstream installer and loads the ADOT rules for those
targets into a separate JmxTelemetry. jvm and tomcat are still handled
by the upstream installer.
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Claude finished @vastin's task in 1m 56s —— View job


Claude Code Review

  • Fetch prior review comments (none inline — no prior findings to dedupe against)
  • Review PR diff
  • Analyze changes
  • Post review

Review Summary

The dependency bump itself (.github/patches/versions, dependencyManagement/build.gradle.kts) is consistent and well-formed. The substantive part of this PR is the new AwsJmxRulesInstaller, which restores classpath loading for ADOT-only JMX target systems after upstream 2.32.0 stopped doing so.

AwsJmxRulesInstaller.java — looks solid

  • ADOT_TARGET_SYSTEMS correctly scoped to the three target systems that only ship with ADOT (kafka, kafka-consumer, kafka-producer); jvm and tomcat are intentionally left to the upstream installer (verified: all five yaml files exist under instrumentation/jmx-metrics/src/main/resources/jmx/rules/).
  • afterAgent mirrors the upstream JmxMetricInsightInstaller config contract (jmx.enabled, jmx.target.system, jmx.discovery.delay with the 1-minute default), so overrides behave consistently.
  • Error handling is appropriately defensive: catching IOException | RuntimeException from builder.addRules(input) and only logging — JMX misconfig must never prevent agent startup. Good call-out in the comment at line 104.
  • The adotTargetSystemsAreNotSupportedUpstream test using InternalMetricsDefinitions.getSupportedSystems() is a nice guard against duplicate-load regressions when bumping upstream in the future. This is exactly what will catch it if upstream ever adds a kafka target system.

Minor nits (non-blocking)

  • awsagentprovider/src/main/java/.../AwsJmxRulesInstaller.java:99 — logging Level.SEVERE for a missing classpath resource is effectively unreachable (we ship the files ourselves and ADOT_TARGET_SYSTEMS is static), but it's defensive and harmless. WARNING might match the actual severity better; keep as-is if you prefer loudness on packaging regressions.
  • AwsJmxRulesInstallerTest.loadsAdotRulesFromClasspath smoke-tests classpath/YAML parsing but doesn't exercise AwsJmxRulesInstaller.addClasspathRules directly. Not critical since addClasspathRules is a thin wrapper, but a direct test (with a captured JmxTelemetryBuilder) would give slightly stronger coverage of the error-logging branch.

Lambda layer patch (lambda-layer/patches/opentelemetry-java-instrumentation.patch)

Rebase onto upstream 2.32.0 looks correct: it preserves the ADOT-specific change of threading the Lambda Context into instrumenter.extract(request, context) for X-Ray trace-header propagation. The upstream refactor that inlined X-Ray extraction via MethodHandle is cleanly reverted in favor of the pre-existing ADOT ParentContextExtractor approach, and the test InstrumenterExtractionTest is updated to pass awsContext/contextWithXrayTraceId through the new signature. No logic drift spotted.

Nothing blocking from me. The CI failure is almost certainly from upstream smoke/contract tests rather than the diff itself — worth a maintainer's eyes on the logs before merge.
| Branch: nightly-dependency-updates

vastin
vastin previously approved these changes Oct 16, 2026
Upstream 2.32.0 loads jmx/rules/<system>.yaml as its built-in stable
rules and enables their unstable metrics for legacy target systems. With
ADOT's rules in jmx/rules/, that meant:
- the jvm target, also used by Application Signals runtime metrics,
  gained 7 upstream jvm metrics.
- the tomcat target gained 8 upstream tomcat metrics.
- ADOT's tomcat rules loaded even with no target system set.
Loading upstream's jvm rules next to ADOT's is not an option either:
both define jvm.cpu.time, in s and ns, which the CloudWatch agent maps
to JVMCpuTime.

Move the ADOT rules to jmx/aws/rules/. Move the ADOT target systems
(jvm, tomcat, kafka, kafka-consumer, kafka-producer) from
otel.jmx.target.system to otel.aws.jmx.target.system, and load their
rules in AwsJmxRulesInstaller, with the same discovery delay as the
upstream installer. The other target systems are left to the upstream
installer. JMX metrics for the ADOT target systems are the same as with
the current release, with or without Application Signals or the AWS
JMX exporter.

RuntimeMetricsTest now also checks the units and "name" attribute values
that the CloudWatch agent relies on to produce the Application Signals
runtime metrics, so changes of the underlying metrics that would break
them fail the test. Additional metrics are still allowed.
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Claude finished @vastin's task in 1m 50s —— View job


Claude Code Review

  • Fetch prior review comments (no inline comments; one DISMISSED formal review)
  • Review PR diff
  • Analyze changes
  • Post review

Review Summary

Routine nightly dependency bump plus the follow-up fixes to keep ADOT's JMX metrics unchanged after upstream OTel instrumentation 2.32.0 stopped loading classpath-provided JMX target systems.

The substantive diff — AwsJmxRulesInstaller + agent-listener registration, the AwsApplicationSignalsCustomizerProvider.customizeProperties split that moves ADOT targets onto otel.aws.jmx.target.system, the jmx/rules/ → jmx/aws/rules/ relocation (so upstream's InternalMetricsDefinitions can't accidentally pick them up), and the rebased Lambda opentelemetry-java-instrumentation.patch preserving the extract(request, context) X-Ray-aware extraction path — was already reviewed in detail at this prior run and the findings there still stand (nothing blocking, two minor non-blocking nits already noted).

The only change since that review is d30cb51 (CHANGELOG entry for 2.32.0 / 1.61.0) — straightforward and correctly placed under the unreleased section.

No new substantive issues to flag.

Note: The linked CI run is reported as failing. The author's call-outs in the commit messages (fix: load ADOT kafka JMX rules…, fix: keep ADOT JMX metrics unchanged on OTel 2.32.0) address the most likely upstream fallout from 2.32.0; a maintainer should still confirm the remaining CI failure isn't a different smoke/contract regression before merge.
| Branch: nightly-dependency-updates

…dates

# Conflicts:
#	awsagentprovider/src/test/java/software/amazon/opentelemetry/javaagent/providers/AwsApplicationSignalsCustomizerProviderTest.java
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Claude finished @vastin's task in 2m 17s —— View job


Claude Code Review

  • Fetch prior review comments (no inline comments; one DISMISSED formal review from @vastin)
  • Review PR diff
  • Analyze changes
  • Post review

Review Summary

The substantive work in this PR — AwsJmxRulesInstaller + AgentListener registration, the customizeProperties split that moves ADOT target systems onto otel.aws.jmx.target.system, the jmx/rules/ → jmx/aws/rules/ relocation (so upstream InternalMetricsDefinitions can't accidentally pick them up), and the rebased Lambda opentelemetry-java-instrumentation.patch preserving the extract(request, context) X-Ray-aware extraction path — was reviewed in detail at this prior run. Findings there still stand (nothing blocking; two minor non-blocking nits already noted).

Changes since that review:

  • d30cb51 — CHANGELOG entry for 2.32.0 / 1.61.0. Correctly placed under the unreleased section.
  • a55ebb1 — new testApplicationSignalsConsoleMetrics regression guards in appsignals-tests/.../RuntimeMetricsTest.java. These lock in the OTLP metric names, units (ms, By, ns, 1), and name-attribute values that CloudWatch agent maps to the console-visible Application Signals runtime metrics (JVMGCDuration, JVMMemoryOldGenUsed, …). This is exactly the right kind of guard against the regression that motivated the AwsJmxRulesInstaller work — future upstream changes that silently drop or rename these will fail this test. Nothing to flag.

No new substantive issues.

Note: The linked CI run is reported as failing. The commit messages (fix: load ADOT kafka JMX rules…, fix: keep ADOT JMX metrics unchanged on OTel 2.32.0, test: align OTLP AWS exporter and credential provider coverage) address the most likely upstream fallout from 2.32.0; a maintainer should still confirm the remaining CI failure isn't a different smoke/contract regression before merge.
| Branch: nightly-dependency-updates

@vastin
vastin enabled auto-merge (squash) October 16, 2026 22:54
@vastin
vastin merged commit 72e1512 into main Oct 16, 2026
23 of 25 checks passed
@vastin
vastin deleted the nightly-dependency-updates branch October 16, 2026 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants