Skip to content

Adopt JSpecify in shared components - #13025

Draft
bric3 wants to merge 1 commit into
bdu/nullaway-productionfrom
bdu/jspecify-production
Draft

bric3 wants to merge 1 commit into
bdu/nullaway-productionfrom
bdu/jspecify-production

Conversation

@bric3

@bric3 bric3 commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

What Does This Do

Adopt JSpecify in context, time, and version utilities. Enable NullAway's JSpecify mode, mark each production package, and describe nullable context array elements.

Motivation

Standardise nullness contracts in the initial adopters and check nullable values inside generic types and arrays.

Additional Notes

Stacked on #13022. The migration stays within the three initial adopters. Existing JetBrains contracts, SpotBugs suppressions, concurrency annotations, and Forbidden APIs annotations retain their dependencies.

Java 8 type reflection throws a NullPointerException when type annotation classes are absent at runtime. The agent bundles the four JSpecify annotations under datadog.trace.bootstrap.jspecify.annotations. A probe against the assembled agent verified Java 8 return and array annotation reflection and isolation from the application's org.jspecify classes.

Compiling @NullMarked with --release 8 emits the known ElementType.MODULE warning; see the JSpecify compatibility notes.

Local agent assembly used an isolated Maven local directory to bypass an incomplete Sisu artifact in the existing local cache.

Contributor Checklist

@bric3 bric3 added comp: tooling Build & Tooling type: feature Enhancements and improvements tag: ai generated Largely based on code generated by an AI or LLM tag: no release notes Changes to exclude from release notes labels Oct 23, 2026 — with ChatGPT Codex Connector
@bric3
bric3 added this pull request to stack #13023 October 23, 2026 17:11
@datadog-prod-us1-5

datadog-prod-us1-5 Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🎯 Code Coverage (details)
• Patch Coverage: 100.00%
• Overall Coverage: 57.39% (-2.47%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: aca1518 | Docs | Give us feedback!

@dd-octo-sts

dd-octo-sts Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results
Scenario Candidate master Δ (95% CI of mean)
startup:insecure-bank:iast:Agent 13.96 s 13.86 s [-0.0%; +1.4%] (no difference)
startup:insecure-bank:tracing:Agent 12.88 s 12.95 s [-1.2%; +0.1%] (no difference)
startup:petclinic:appsec:Agent 17.74 s 17.61 s [-0.2%; +1.6%] (no difference)
startup:petclinic:iast:Agent 17.48 s 17.55 s [-1.4%; +0.6%] (no difference)
startup:petclinic:profiling:Agent 17.63 s 17.52 s [-0.6%; +1.8%] (no difference)
startup:petclinic:sca:Agent 17.79 s 17.72 s [-0.3%; +1.2%] (no difference)
startup:petclinic:tracing:Agent 16.72 s 16.80 s [-1.4%; +0.4%] (no difference)

Commit: aca15186 · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: tooling Build & Tooling tag: ai generated Largely based on code generated by an AI or LLM tag: no release notes Changes to exclude from release notes type: feature Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant