Skip to content

Upgrade IAST Error Prone and NullAway - #12642

Open
bric3 wants to merge 3 commits into
masterfrom
codex/upgrade-errorprone-nullaway
Open

bric3 wants to merge 3 commits into
masterfrom
codex/upgrade-errorprone-nullaway

Conversation

@bric3

@bric3 bric3 commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

What Does This Do

Upgrade IAST's Error Prone to 2.50.0 and NullAway to 0.14.2. Compile IAST with JDK 25 and --release 8, and update the iterator's nullable varargs annotations for the newer NullAway checks.

Motivation

The older checker versions were not not upgraded because they enforced a Java 11 compiler (errorprone is a compiler "plugin"). Now that compilation happens on a later JDK (currently the one from the Gradle daemon (Java 25)), this requirement is no longer valid. The upgrade removes that compiler configuration, i.e. it is the java tracer default (targeting Java 8 bytecodes).

Note

With NullAway 0.14, a nullable varargs array needs a type-use annotation on the array dimension. For example, in Iterators:

final @Nullable E @Nullable ... items

The first annotation permits null elements; the second permits a null varargs array. Unfortunately the javax.annotation.Nullable cannot be placed on the array dimension. JSpecify's @Nullable supports this placement, but it's not a declared dependency today. JetBrains annotations however are already a compileOnly dependency, and JetBrains annotations support these type-use positions. See NullAway's annotation placement guide.

The above note suggests it might be useful to switch to standard JSpecify annotations at sone point, however this require to declare them as a dependency.

Additional Notes

--should-stop=ifError=FLOW tells javac to continue through flow analysis before stopping after an error. Error Prone 2.50.0 requires that setting otherwise the compilation fails with The default --should-stop=ifError policy (INIT) is not supported by Error Prone.
See Error Prone's installation guide.

Contributor Checklist

@bric3 bric3 added type: feature Enhancements and improvements comp: tooling Build & Tooling comp: asm iast Application Security Management (IAST) tag: dependencies Dependencies related changes tag: no release notes Changes to exclude from release notes tag: ai generated Largely based on code generated by an AI or LLM labels Sep 25, 2026 — with ChatGPT Codex Connector
@datadog-prod-us1-6

This comment has been minimized.

@dd-octo-sts

dd-octo-sts Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

🟡 Java Benchmark SLOs — Performance SLO warning (near threshold)

Suite Status
Startup 🟡 warning

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 14.00 s 13.98 s [-0.5%; +0.7%] (no difference)
startup:insecure-bank:tracing:Agent 12.94 s 13.06 s [-1.6%; -0.3%] (maybe better)
startup:petclinic:appsec:Agent 17.52 s 16.76 s [+0.3%; +8.8%] (maybe worse)
startup:petclinic:iast:Agent 17.44 s 17.54 s [-1.3%; +0.1%] (no difference)
startup:petclinic:profiling:Agent 17.34 s 17.36 s [-1.4%; +1.2%] (no difference)
startup:petclinic:sca:Agent 17.58 s 17.30 s [+0.6%; +2.6%] (maybe worse)
startup:petclinic:tracing:Agent 16.25 s 16.64 s [-6.6%; +1.9%] (no difference)

Commit: e68a3a56 · 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.

@bric3
bric3 marked this pull request as ready for review September 25, 2026 15:21
@bric3
bric3 requested review from a team as code owners September 25, 2026 15:21
@bric3
bric3 requested review from amarziali, jandro996 and manuel-alvarez-alvarez and removed request for a team September 25, 2026 15:21
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-25T15:23:59.842230Z e68a3a5 Draft marked ready
🔒 Security Review ✅ Completed 2026-09-25T15:24:37.660815Z e68a3a5 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@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.

Bits Code Review: PASS

More details

The IAST checker upgrade preserves Java 8 targeting while satisfying Error Prone 2.50.0 and NullAway 0.14.2’s compiler and annotation requirements.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Bits Code Review · Commit e68a3a5 · @DataDog review to ask questions

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: asm iast Application Security Management (IAST) comp: tooling Build & Tooling tag: ai generated Largely based on code generated by an AI or LLM tag: dependencies Dependencies related changes 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