Skip to content

Avoid final field modification in Weaver instrumentation#11728

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 3 commits into
masterfrom
daniel.mohedano/jep-500-weaver
Jun 25, 2026
Merged

Avoid final field modification in Weaver instrumentation#11728
gh-worker-dd-mergequeue-cf854d[bot] merged 3 commits into
masterfrom
daniel.mohedano/jep-500-weaver

Conversation

@daniel-mohedano

@daniel-mohedano daniel-mohedano commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

What Does This Do

  • Avoid final field modifications in Weaver instrumentation by intercepting the constructor argument OnMethodEnter instead of modifying the field OnMethodExit.

Motivation

Avoid failures in future JDKs due to JEP 500: Prepare to Make Final Mean Final.

Additional Notes

Running an example project on JDK26 with JAVA_TOOL_OPTIONS: --illegal-final-field-mutation=debug produced the following logs:

Final field queue in class weaver.framework.SbtTask has been mutated reflectively by class weaver.framework.SbtTask in unnamed module

The build containing the fix doesn't produce the logs.

Contributor Checklist

  • Format the title according to the contribution guidelines
  • Assign the type: and (comp: or inst:) labels in addition to any other useful labels
  • Avoid using close, fix, or any linking keywords when referencing an issue
    Use solves instead, and assign the PR milestone to the issue
  • Update the CODEOWNERS file on source file addition, migration, or deletion
  • Update public documentation with any new configuration flags or behaviors
  • Add your completed PR to the merge queue by commenting /merge. You can also:
    • Customize the commit message associated with the merge with /merge --commit-message "..."
    • Remove your PR from the merge queue with /merge -c
    • Skip all merge queue checks with /merge -f --reason "reason"; please use this judiciously, as some checks do not run at the PR-level (note: the PR still needs to be mergeable, this will only skip the pre-merge build)
    • Get more information in this doc

Jira ticket: SDTEST-3866

@daniel-mohedano daniel-mohedano added type: feature Enhancements and improvements comp: ci visibility Continuous Integration Visibility labels Jun 24, 2026
@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - sbt-scalatest

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 53.46 54.33 $\color{green}{\blacktriangledown}$ -0.87 55.43 $\color{green}{\blacktriangledown}$ -1.97 46/186
agentEvpProxy 53.11 n/a n/a n/a n/a -

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - nebula-release-plugin

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 35.42 36.42 $\color{green}{\blacktriangledown}$ -1.00 36.42 $\color{green}{\blacktriangledown}$ -1.00 21/91
agentless 35.08 35.70 $\color{green}{\blacktriangledown}$ -0.62 35.70 $\color{green}{\blacktriangledown}$ -0.62 21/91
agentlessCodeCoverage 44.12 44.48 $\color{green}{\blacktriangledown}$ -0.36 43.60 $\color{red}{\blacktriangle}$ +0.52 21/91
agentlessLineCoverage 74.80 74.82 $\color{green}{\blacktriangledown}$ -0.02 74.82 $\color{green}{\blacktriangledown}$ -0.02 20/90

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - netflix-zuul

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 86.72 87.80 $\color{green}{\blacktriangledown}$ -1.08 86.07 $\color{red}{\blacktriangle}$ +0.65 28/131
agentless 81.18 81.05 $\color{red}{\blacktriangle}$ +0.13 81.05 $\color{red}{\blacktriangle}$ +0.13 25/130
agentlessCodeCoverage 95.78 95.12 $\color{red}{\blacktriangle}$ +0.66 95.12 $\color{red}{\blacktriangle}$ +0.66 25/128
agentlessLineCoverage 111.59 111.62 $\color{green}{\blacktriangledown}$ -0.03 111.62 $\color{green}{\blacktriangledown}$ -0.03 24/127

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - pass4s

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 8.61 9.16 $\color{green}{\blacktriangledown}$ -0.55 9.73 $\color{green}{\blacktriangledown}$ -1.12 24/94
agentless 10.17 9.73 $\color{red}{\blacktriangle}$ +0.44 9.73 $\color{red}{\blacktriangle}$ +0.44 24/95
agentlessCodeCoverage 21.60 17.03 $\color{red}{\blacktriangle}$ +4.57 17.73 $\color{red}{\blacktriangle}$ +3.87 22/93

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - reactive-streams-jvm

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 21.55 21.65 $\color{green}{\blacktriangledown}$ -0.10 21.65 $\color{green}{\blacktriangledown}$ -0.10 27/143
agentless 18.73 18.82 $\color{green}{\blacktriangledown}$ -0.09 18.82 $\color{green}{\blacktriangledown}$ -0.09 25/140
agentlessCodeCoverage 19.63 19.99 $\color{green}{\blacktriangledown}$ -0.36 19.99 $\color{green}{\blacktriangledown}$ -0.36 25/140
agentlessLineCoverage 30.04 29.82 $\color{red}{\blacktriangle}$ +0.22 29.82 $\color{red}{\blacktriangle}$ +0.22 25/140

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - sonar-kotlin

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 13.64 12.62 $\color{red}{\blacktriangle}$ +1.02 12.87 $\color{red}{\blacktriangle}$ +0.77 23/93
agentless 13.81 11.42 $\color{red}{\blacktriangle}$ +2.39 11.88 $\color{red}{\blacktriangle}$ +1.93 23/92
agentlessCodeCoverage 15.73 14.51 $\color{red}{\blacktriangle}$ +1.22 15.11 $\color{red}{\blacktriangle}$ +0.62 23/92
agentlessLineCoverage 19.31 18.45 $\color{red}{\blacktriangle}$ +0.86 18.82 $\color{red}{\blacktriangle}$ +0.49 22/91

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - jolokia

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 93.85 93.23 $\color{red}{\blacktriangle}$ +0.62 93.23 $\color{red}{\blacktriangle}$ +0.62 27/95
agentless 90.53 89.58 $\color{red}{\blacktriangle}$ +0.95 89.58 $\color{red}{\blacktriangle}$ +0.95 27/96
agentlessCodeCoverage 99.63 99.00 $\color{red}{\blacktriangle}$ +0.63 99.00 $\color{red}{\blacktriangle}$ +0.63 25/94
agentlessLineCoverage 101.40 99.00 $\color{red}{\blacktriangle}$ +2.40 99.00 $\color{red}{\blacktriangle}$ +2.40 25/93

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - okhttp

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 20.44 19.59 $\color{red}{\blacktriangle}$ +0.85 19.59 $\color{red}{\blacktriangle}$ +0.85 26/97
agentless 19.26 19.20 $\color{red}{\blacktriangle}$ +0.06 19.20 $\color{red}{\blacktriangle}$ +0.06 25/99
agentlessCodeCoverage 21.36 22.09 $\color{green}{\blacktriangledown}$ -0.73 22.09 $\color{green}{\blacktriangledown}$ -0.73 25/94
agentlessLineCoverage 43.52 44.48 $\color{green}{\blacktriangledown}$ -0.96 44.48 $\color{green}{\blacktriangledown}$ -0.96 28/97

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jun 24, 2026

Copy link
Copy Markdown

Test Environment - spring_boot

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 15.94 16.04 $\color{green}{\blacktriangledown}$ -0.10 16.04 $\color{green}{\blacktriangledown}$ -0.10 21/90
agentless 9.37 9.54 $\color{green}{\blacktriangledown}$ -0.17 9.73 $\color{green}{\blacktriangledown}$ -0.36 22/90
agentlessCodeCoverage 13.61 13.13 $\color{red}{\blacktriangle}$ +0.48 13.40 $\color{red}{\blacktriangle}$ +0.21 21/89
agentlessLineCoverage 31.89 32.30 $\color{green}{\blacktriangledown}$ -0.41 32.30 $\color{green}{\blacktriangledown}$ -0.41 21/89

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@daniel-mohedano
daniel-mohedano marked this pull request as ready for review June 25, 2026 08:31
@daniel-mohedano
daniel-mohedano requested a review from a team as a code owner June 25, 2026 08:31

@datadog-prod-us1-6 datadog-prod-us1-6 Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Datadog Autotest: PASS

More details

Argument index 5 for the queue parameter is verified by javap disassembly of both Disney 0.8.4 (ConcurrentLinkedQueue) and typelevel 0.9+ (LinkedBlockingQueue) SbtTask constructors — the queue lands at JVM local slot 6 (0-based arg index 5) in both versions, and the field is confirmed ACC_PRIVATE, ACC_FINAL. All proxy delegation, double-wrap guard, and null-event handling scenarios pass synthetic execution. The OnMethodEnter approach also eliminates a narrow race window that existed in the old OnMethodExit approach.

Was this helpful? React 👍 or 👎

📊 Validated against 6 scenarios · Open Bits AI session

🤖 Datadog Autotest · Commit 5586d54 · What is Autotest? · Any feedback? Reach out in #autotest

daniel-mohedano and others added 2 commits June 25, 2026 10:51
…/trace/instrumentation/weaver/WeaverInstrumentation.java

Co-authored-by: Brice Dutheil <[email protected]>
…/trace/instrumentation/weaver/WeaverInstrumentation.java

Co-authored-by: Brice Dutheil <[email protected]>
@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Test Environment - sonar-java

Job Status: 🟢 success

Scenario This PR (%) 7d median Δ 7d 30d median Δ 30d runs (7d/30d)
agent 38.74 24.41 $\color{red}{\blacktriangle}$ +14.33 16.36 $\color{red}{\blacktriangle}$ +22.38 27/96
agentless 37.06 17.38 $\color{red}{\blacktriangle}$ +19.68 15.11 $\color{red}{\blacktriangle}$ +21.95 26/95
agentlessCodeCoverage 66.51 89.58 $\color{green}{\blacktriangledown}$ -23.07 86.07 $\color{green}{\blacktriangledown}$ -19.56 26/95
agentlessLineCoverage 120.87 139.09 $\color{green}{\blacktriangledown}$ -18.22 144.77 $\color{green}{\blacktriangledown}$ -23.90 25/94

Baseline: median of @test.tracer_overhead on main (gitlab) over the last 7/30 days, per OSS project & scenario. Δ = this PR − baseline median; red ▲ = more overhead, green ▽ = less overhead than baseline.

@daniel-mohedano

Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351 Bot commented Jun 25, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-06-25 10:53:31 UTC ℹ️ Start processing command /merge


2026-06-25 10:53:36 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in master is approximately 1h (p90).


2026-06-25 11:53:20 UTC ℹ️ MergeQueue: This merge request was merged

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit cebb1b8 into master Jun 25, 2026
581 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the daniel.mohedano/jep-500-weaver branch June 25, 2026 11:53
@github-actions github-actions Bot added this to the 1.64.0 milestone Jun 25, 2026
TophrC-dd pushed a commit that referenced this pull request Jun 29, 2026
fix: avoid final field modification in Weaver instrumentation

Update dd-java-agent/instrumentation/weaver-0.9/src/main/java/datadog/trace/instrumentation/weaver/WeaverInstrumentation.java

Co-authored-by: Brice Dutheil <[email protected]>

Update dd-java-agent/instrumentation/weaver-0.9/src/main/java/datadog/trace/instrumentation/weaver/WeaverInstrumentation.java

Co-authored-by: Brice Dutheil <[email protected]>

Co-authored-by: daniel.mohedano <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: ci visibility Continuous Integration Visibility type: feature Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants