Skip to content

Add testProcess{Config} task to accept user options#581

Open
zhengyu123 wants to merge 12 commits into
mainfrom
zgu/test_cmd_opts
Open

Add testProcess{Config} task to accept user options#581
zhengyu123 wants to merge 12 commits into
mainfrom
zgu/test_cmd_opts

Conversation

@zhengyu123

@zhengyu123 zhengyu123 commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?:
This PR adds a new task for testing, that accepts user options.

Motivation:
The task is created for testing new feature that avoids preloading all jmethod ids. By default, the feature is disabled and has to be enabled via fjmethodid=false argument, which is not possible with current testdebug/release tasks.

Additional Notes:

How to test the change?:
Run ./gradlew Pprofiler.options=fjmethodid=false testProcessDebug, fjmethodid=false is merged into command line that print out by tests.

For example:

[TEST] Applied profiler.options: fjmethodid=false
===> keep_jfrs: false
com.datadoghq.profiler.wallclock.SmokeWallTest > test PASSED (789ms)
com.datadoghq.profiler.wallclock.SmokeWallTest > test STARTED
[TEST] Applied profiler.options: fjmethodid=false
===> command: start,wall=1ms,fjmethodid=false,cstack=vm,attributes=tag1;tag2;tag3,jfr,file=/tmp/recordings/fp/SmokeWallTest_test14542021396455448632.jfr

For Datadog employees:

  • If this PR touches code that signs or publishes builds or packages, or handles
    credentials of any kind, I've requested a review from @DataDog/security-design-and-guidance.
  • This PR doesn't touch any of that.
  • JIRA: PROF-14940

Unsure? Have a question? Request a review!

@dd-octo-sts

dd-octo-sts Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

CI Test Results

Run: #29439516770 | Commit: 439f7ff | Duration: 15m 32s (longest job)

4 of 32 test jobs failed

Status Overview

JDK glibc-aarch64/debug glibc-amd64/debug musl-aarch64/debug musl-amd64/debug
8 - - -
8-ibm - - -
8-j9 - -
8-librca - -
8-orcl - - -
11 - - -
11-j9 - -
11-librca - -
17 - -
17-graal - -
17-j9 - -
17-librca - -
21 - -
21-graal - -
21-librca - -
25 - -
25-graal - -
25-librca - -

Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled

Failed Tests

musl-aarch64/debug / 8-librca

Job: View logs

No detailed failure information available. Check the job logs.

musl-aarch64/debug / 11-librca

Job: View logs

No detailed failure information available. Check the job logs.

musl-amd64/debug / 11-librca

Job: View logs

No detailed failure information available. Check the job logs.

musl-amd64/debug / 8-librca

Job: View logs

No detailed failure information available. Check the job logs.

Summary: Total: 32 | Passed: 28 | Failed: 4


Updated: 2026-07-15 20:24:28 UTC

@zhengyu123 zhengyu123 changed the title Zgu/test cmd opts Add testProcess{Config} task to accept user options Jun 5, 2026
@zhengyu123
zhengyu123 marked this pull request as ready for review June 5, 2026 20:24
@zhengyu123
zhengyu123 requested a review from a team as a code owner June 5, 2026 20:24

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6f5c7bae36

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@jbachorik jbachorik left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Sphinx automated review — PR #581 · zgu/test_cmd_opts

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a13c32a888

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ddprof-test/src/test/java/com/datadoghq/profiler/AbstractProfilerTest.java Outdated

@rkennke rkennke left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Good change. I found one small issue, and a bug, which I then found out that Codex already flagged it:
https://github.com/DataDog/java-profiler/pull/581/changes#r3375494440

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0a80e41432

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 0a80e41)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122585095 Commit: 0a80e4143289bc79d408bfa5ea2776baf377ce4b

⚠️ Significant outliers

  • 🔴 fj-kmeans (JDK 25): runtime +7.7% (2637→2841 ms)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10238 ms (7 iters) ✅ 10306 ms (7 iters) ≈ +0.7% (±20.1%) — / —
akka-uct 25 ✅ 8873 ms (8 iters) ✅ 8959 ms (8 iters) ≈ +1% (±18.2%) — / —
finagle-chirper 21 ✅ 5991 ms (11 iters) ✅ 6043 ms (11 iters) ≈ +0.9% (±47.8%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5449 ms (12 iters) ✅ 5394 ms (12 iters) ≈ -1% (±43.6%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2876 ms (22 iters) ✅ 2821 ms (22 iters) ≈ -1.9% (±4.3%) — / —
fj-kmeans 25 ✅ 2637 ms (24 iters) ✅ 2841 ms (22 iters) 🔴 +7.7% — / —
future-genetic 21 ✅ 2044 ms (30 iters) ✅ 2070 ms (30 iters) ≈ +1.3% (±4.4%) — / —
future-genetic 25 ✅ 2057 ms (30 iters) ✅ 1967 ms (31 iters) ≈ -4.4% (±4.7%) — / —
naive-bayes 21 ✅ 1232 ms (46 iters) ✅ 1270 ms (45 iters) ≈ +3.1% (±58.3%) — / —
naive-bayes 25 ✅ 1022 ms (56 iters) ✅ 1024 ms (56 iters) ≈ +0.2% (±54.4%) — / —
reactors 21 ✅ 15424 ms (5 iters) ✅ 16820 ms (5 iters) ≈ +9.1% (±14.4%) — / —
reactors 25 ✅ 17672 ms (5 iters) ✅ 18532 ms (5 iters) ≈ +4.9% (±5.1%) — / —
Internal counter details (ddprof)

ddprof internal counters, latest / dev (✅ = 0, · = unavailable):

Benchmark JDK Dropped rec Dropped jvmti Dropped trace Skipped WC AGCT fail Unwind fail
akka-uct 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 1 / 1 2246 / 2167 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ ✅ / 2 8269 / 8286 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 1 / 1 1308 / 1280 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 3 / 1 2907 / 2790 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ 4 / ✅ 3486 / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 6 / 6 3503 / 3518 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ 1 / ✅ 1550 / 1704 ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ ✅ / 1 1815 / 1878 ✅ / ✅ ✅ / ✅

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Pipelines

Fix all issues with BitsAI

⚠️ Warnings

🚦 5 Pipeline jobs failed

CI Run | test-matrix / test-linux-musl-aarch64 (11-librca, debug)   View in Datadog   GitHub Actions

CI Run | test-matrix / test-linux-musl-aarch64 (8-librca, debug)   View in Datadog   GitHub Actions

CI Run | test-matrix / test-linux-musl-amd64 (11-librca, debug)   View in Datadog   GitHub Actions

View all 5 failed jobs.

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 50547f5 | Docs | Datadog PR Page | Give us feedback!

@zhengyu123

zhengyu123 commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

Summary of what changed in ddprof-test/src/test/java/com/datadoghq/profiler/AbstractProfilerTest.java: the -Pprofiler.options override logic is now exposed as public static String applyProfilerOptionOverrides(String), reused by getAmendedProfilerCommand(). Then I wired it into every test that calls JavaProfiler.execute() with a hard-coded command instead of going through AbstractProfilerTest:

ShutdownTest — runTest() now builds "start," + applyProfilerOptionOverrides(options) + ",jfr,file=..."; call sites pass options only (no "start," prefix baked in).
OtelContextStorageModeTest — all 5 execute() calls now wrap their options portion.
NativeSocketRestartTest — the manual restart-session execute() call now wraps "natsock=100us".
StopWithChurningThreadsTest / StartWithChurningThreadsTest — PROFILER_CMD split into a PROFILER_OPTIONS constant plus an override-applied command built once before the loop.
GetLineNumberTableLeakTest, WriteStackTracesAfterClassUnloadTest, CleanupAfterClassUnloadTest (all extend AbstractProfilerTest via AbstractDynamicClassTest) — now call applyProfilerOptionOverrides(getProfilerCommand()) instead of using getProfilerCommand()/a hard-coded literal directly.
One correctness detail I had to work around: the merge logic parses comma-separated key=value pairs, so wrapping the whole command (including the literal "start" action keyword or the trailing "jfr,file=..." segment) would corrupt them into "start=" / spurious keys. Every fix above applies the override only to the pure-options substring, matching the pattern AbstractProfilerTest itself already uses.

CarrierContextStorageTest and IdleThreadLifecycleTest needed no change — neither calls execute() with a profiler command. :ddprof-test:compileTestJava compiles cleanly with these changes (I also removed a handful of stale .o build artifacts left over from an upstream file rename that were unrelated to this fix but were blocking the native link step).

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 710ac934b8

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

result.append(",");
}
result.append(entry.getKey());
result.append("=").append(entry.getValue());

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve no-value profiler flags

When either the base command or -Pprofiler.options contains a flag without an equals sign, this rebuild path stores it as an empty string and then always emits key=. The native parser distinguishes those forms: for example memory uses the default allocation interval while memory= parses to 0, and jvmtistacks enables with no value but jvmtistacks= disables it. As a result, testProcessDebug -Pprofiler.options=memory does not run the requested profiler configuration and can turn on every-allocation sampling instead.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

And this also sounds like a valid concern that's not addressed?

@zhengyu123
zhengyu123 marked this pull request as draft July 3, 2026 14:52
@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 710ac93)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122608527 Commit: 710ac934b8df5ebdd662a95ddcf996e3b21875bc

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 25): runtime -9.7% (2074→1873 ms)
  • 🔴 reactors (JDK 25): runtime +7.8% (17345→18700 ms)
  • ⚠️ akka-uct (JDK 21): wallclock unwinds skipped — latest 0 → dev 1828 (new)
  • ⚠️ akka-uct (JDK 25): wallclock unwinds skipped — latest 0 → dev 2210 (new)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10387 ms (7 iters) ✅ 10226 ms (7 iters) ≈ -1.6% (±21.7%) — / —
akka-uct 25 ✅ 8956 ms (8 iters) ✅ 8826 ms (8 iters) ≈ -1.5% (±21%) — / —
finagle-chirper 21 ✅ 5933 ms (11 iters) ✅ 6034 ms (11 iters) ≈ +1.7% (±46.6%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5472 ms (12 iters) ✅ 5412 ms (12 iters) ≈ -1.1% (±42.8%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2847 ms (22 iters) ✅ 2753 ms (23 iters) ≈ -3.3% (±4.3%) — / —
fj-kmeans 25 ✅ 2801 ms (22 iters) ✅ 2805 ms (22 iters) ≈ +0.1% (±4.6%) — / —
future-genetic 21 ✅ 2041 ms (30 iters) ✅ 2042 ms (30 iters) ≈ +0% (±4.6%) — / —
future-genetic 25 ✅ 2074 ms (30 iters) ✅ 1873 ms (33 iters) 🟢 -9.7% — / —
naive-bayes 21 ✅ 1277 ms (45 iters) ✅ 1223 ms (47 iters) ≈ -4.2% (±55%) — / —
naive-bayes 25 ✅ 1015 ms (56 iters) ✅ 1019 ms (56 iters) ≈ +0.4% (±55.6%) — / —
reactors 21 ✅ 16615 ms (5 iters) ✅ 15814 ms (5 iters) ≈ -4.8% (±14.3%) — / —
reactors 25 ✅ 17345 ms (5 iters) ✅ 18700 ms (5 iters) 🔴 +7.8% — / —
Internal counter details (ddprof)

ddprof internal counters, latest / dev (✅ = 0, · = unavailable):

Benchmark JDK Dropped rec Dropped jvmti Dropped trace Skipped WC AGCT fail Unwind fail
akka-uct 21 ✅ / ✅ ✅ / ✅ ✅ / 2 ✅ / 1828 ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ ✅ / 4 ✅ / 2210 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 3 / ✅ 8521 / 8422 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 6 / 2 1250 / 1277 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 2 / ✅ 2907 / 2835 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 2 / 3 3459 / 3498 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ 3 / ✅ 1680 / 1603 ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ 1 / ✅ 1749 / 1876 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Reliability & Chaos Results

1 failure(s) detected Pipeline: https://gitlab.ddbuild.io/DataDog/java-profiler/-/pipelines/124847295

❌ chaos: profiler jemalloc amd64 21 0 3 temXchaos
Chaos harness crashed (RC=139)

@jbachorik

Copy link
Copy Markdown
Collaborator

@zhengyu123 ping - do you want to finish this or it's to be closed?

@zhengyu123

Copy link
Copy Markdown
Contributor Author

@zhengyu123 ping - do you want to finish this or it's to be closed?

@jbachorik On my list, let me finish PR 639.

@dd-octo-sts

dd-octo-sts Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 15dbbf7)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124031962 Commit: 15dbbf72207a12d0c387dfea07154ae7a4e46ba0

⚠️ Significant outliers

  • 🟢 fj-kmeans (JDK 25): runtime -3.1% (2846→2759 ms)
  • 🟢 future-genetic (JDK 21): runtime -4.6% (2112→2014 ms)
  • 🔴 future-genetic (JDK 25): runtime +6.9% (1976→2113 ms)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10295 ms (21 iters) ✅ 10329 ms (21 iters) ≈ +0.3% (±11.1%) — / —
akka-uct 25 ✅ 8954 ms (24 iters) ✅ 8911 ms (24 iters) ≈ -0.5% (±11.1%) — / —
finagle-chirper 21 ✅ 6000 ms (33 iters) ✅ 5947 ms (33 iters) ≈ -0.9% (±25.3%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5513 ms (36 iters) ✅ 5545 ms (36 iters) ≈ +0.6% (±23.9%) ⚠️ W:3 / ⚠️ W:3
fj-kmeans 21 ✅ 2748 ms (68 iters) ✅ 2703 ms (70 iters) ≈ -1.6% (±2.7%) — / —
fj-kmeans 25 ✅ 2846 ms (66 iters) ✅ 2759 ms (68 iters) 🟢 -3.1% — / —
future-genetic 21 ✅ 2112 ms (88 iters) ✅ 2014 ms (93 iters) 🟢 -4.6% — / —
future-genetic 25 ✅ 1976 ms (94 iters) ✅ 2113 ms (88 iters) 🔴 +6.9% — / —
naive-bayes 21 ✅ 1252 ms (136 iters) ✅ 1290 ms (133 iters) ≈ +3% (±33.4%) — / —
naive-bayes 25 ✅ 1024 ms (167 iters) ✅ 1014 ms (168 iters) ≈ -1% (±31.7%) — / —
reactors 21 ✅ 17302 ms (15 iters) ✅ 16391 ms (15 iters) ≈ -5.3% (±6.4%) — / —
reactors 25 ✅ 18436 ms (15 iters) ✅ 18510 ms (15 iters) ≈ +0.4% (±6.3%) — / —
Internal counter details (ddprof)

ddprof internal counters, latest / dev (✅ = 0, · = unavailable):

Benchmark JDK Dropped rec Dropped jvmti Dropped trace Skipped WC AGCT fail Unwind fail
akka-uct 21 ✅ / ✅ ✅ / ✅ 2 / 1 1903 / 1893 ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ ✅ / 2 2159 / 2309 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ 4 / 6 9111 / 8785 ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 2 / ✅ 8496 / 8523 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / 1 1250 / 1290 ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 4 / ✅ 1278 / 1281 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ 1 / 3 2942 / 2978 ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ ✅ / ✅ 2820 / 2987 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ 6 / 7 3474 / 3544 ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 4 / 5 3489 / 3441 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / 1 1735 / 1718 ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ 1 / 2 1874 / 1939 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 799203b)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124803428 Commit: 799203bc5ea61690a4da21491c0866656b8b0de7

⚠️ Significant outliers

  • 🔴 fj-kmeans (JDK 21): runtime +3.9% (2733→2840 ms)
  • 🟢 future-genetic (JDK 25): runtime -7% (2103→1955 ms)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10159 ms (21 iters) ✅ 10277 ms (21 iters) ≈ +1.2% (±11%) — / —
akka-uct 25 ✅ 8864 ms (24 iters) ✅ 8898 ms (24 iters) ≈ +0.4% (±10.1%) — / —
finagle-chirper 21 ✅ 5977 ms (33 iters) ✅ 5984 ms (33 iters) ≈ +0.1% (±24.9%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5482 ms (36 iters) ✅ 5507 ms (36 iters) ≈ +0.5% (±24.5%) ⚠️ W:3 / ⚠️ W:3
fj-kmeans 21 ✅ 2733 ms (68 iters) ✅ 2840 ms (66 iters) 🔴 +3.9% — / —
fj-kmeans 25 ✅ 2814 ms (66 iters) ✅ 2835 ms (66 iters) ≈ +0.7% (±2.7%) — / —
future-genetic 21 ✅ 2011 ms (92 iters) ✅ 2063 ms (90 iters) ≈ +2.6% (±2.6%) — / —
future-genetic 25 ✅ 2103 ms (88 iters) ✅ 1955 ms (95 iters) 🟢 -7% — / —
naive-bayes 21 ✅ 1239 ms (138 iters) ✅ 1253 ms (136 iters) ≈ +1.1% (±32.8%) — / —
naive-bayes 25 ✅ 1008 ms (169 iters) ✅ 1016 ms (169 iters) ≈ +0.8% (±31.8%) — / —
reactors 21 ✅ 16169 ms (15 iters) ✅ 16513 ms (15 iters) ≈ +2.1% (±5.9%) — / —
reactors 25 ✅ 18589 ms (15 iters) ✅ 18434 ms (15 iters) ≈ -0.8% (±3.4%) — / —
Internal counter details (ddprof)

ddprof internal counters, latest / dev (✅ = 0, · = unavailable):

Benchmark JDK Dropped rec Dropped jvmti Dropped trace Skipped WC AGCT fail Unwind fail
akka-uct 21 ✅ / ✅ ✅ / ✅ 1 / 1 2014 / 1985 ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 2 / 1 2086 / 2159 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ 2 / 6 8614 / 8159 ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 3 / 1 8543 / 8597 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ 2 / 2 1270 / 1262 ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 2 / 1 1277 / 1315 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ 2 / 2 2920 / 3055 ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 2 / 4 2938 / 2894 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ 4 / 3 3538 / 3529 ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 4 / 8 3510 / 3480 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ 1560 / 1658 ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ 1 / ✅ 1904 / 1859 ✅ / ✅ ✅ / ✅

@zhengyu123
zhengyu123 marked this pull request as ready for review July 15, 2026 18:11

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 50547f55bb

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +406 to 410
testConfig.environmentVariables.forEach { (key, value) ->
if (key == "LD_LIBRARY_PATH") {
project.logger.info("Removing LD_LIBRARY_PATH to prevent cross-JDK library conflicts (was: $value)")
return@forEach
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove inherited LD_LIBRARY_PATH from Exec tests

When the normal musl Exec test path runs with LD_LIBRARY_PATH already set in the CI shell, this loop only filters values coming from testConfig.environmentVariables; Gradle Exec tasks inherit the current process environment by default, so the ambient LD_LIBRARY_PATH remains in execTask.environment. The previous doFirst removed the inherited value as well, and without that removal $JAVA_TEST_HOME/bin/java can again load the wrong libjli.so, which is the cross-JDK failure this block is meant to prevent.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Right, that has been introduced by the change that I have requested. I think the previous version was actually more-correct. Sorry for that noise.

// Profiler options from -Pprofiler.options property
val profilerOptions = project.findProperty("profiler.options") as String?
if (profilerOptions != null) {
allArgs.add("-Dddprof.test.options=$profilerOptions")

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Forward profiler options to spawned test JVMs

This only adds ddprof.test.options to the ProfilerTestRunner JVM. Fresh evidence beyond the earlier direct execute cases: tests such as JavaProfilerTest.vmStackwalkerCrashRecoveryTest go through AbstractProcessProfilerTest.launch, which builds a new java command from explicit jvmArgs and a hard-coded profiler command, so testProcessDebug -Pprofiler.options=fjmethodid=false -Ptests=com.datadoghq.profiler.JavaProfilerTest.vmStackwalkerCrashRecoveryTest still profiles the child process without the requested override. Please propagate the property or merge the options before launching ExternalLauncher.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

AFAICT, that is a true concern which should be addressed?

@dd-octo-sts

dd-octo-sts Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 50547f5)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124847306 Commit: 50547f55bb39dedbc53c7d6c09e73a8ecf3e1d26

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 21): runtime -3.7% (2171→2090 ms)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10231 ms (21 iters) ✅ 10165 ms (21 iters) ≈ -0.6% (±11.4%) — / —
akka-uct 25 ✅ 8797 ms (24 iters) ✅ 8773 ms (24 iters) ≈ -0.3% (±10%) — / —
finagle-chirper 21 ✅ 5956 ms (33 iters) ✅ 5979 ms (33 iters) ≈ +0.4% (±25.1%) ⚠️ W:3 / ⚠️ W:3
finagle-chirper 25 ✅ 5517 ms (36 iters) ✅ 5476 ms (36 iters) ≈ -0.7% (±24.4%) ⚠️ W:4 / ⚠️ W:3
fj-kmeans 21 ✅ 2653 ms (71 iters) ✅ 2706 ms (70 iters) ≈ +2% (±2.6%) — / —
fj-kmeans 25 ✅ 2829 ms (66 iters) ✅ 2816 ms (66 iters) ≈ -0.5% (±2.6%) — / —
future-genetic 21 ✅ 2171 ms (86 iters) ✅ 2090 ms (88 iters) 🟢 -3.7% — / —
naive-bayes 21 ✅ 1246 ms (137 iters) ✅ 1275 ms (135 iters) ≈ +2.3% (±33.3%) — / —
naive-bayes 25 ✅ 1014 ms (169 iters) ✅ 1014 ms (169 iters) ≈ 0% (±31.8%) — / —
reactors 21 ✅ 16783 ms (15 iters) ✅ 16332 ms (15 iters) ≈ -2.7% (±7.1%) — / —
Internal counter details (ddprof)

ddprof internal counters, latest / dev (✅ = 0, · = unavailable):

Benchmark JDK Dropped rec Dropped jvmti Dropped trace Skipped WC AGCT fail Unwind fail
akka-uct 21 ✅ / ✅ ✅ / ✅ ✅ / 1 1907 / 1976 ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 2 / 2 2005 / 2239 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ 3 / 2 8644 / 8741 ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 2 / 2 8797 / 8636 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ 1 / 4 1240 / 1315 ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 4 / ✅ 1283 / 1269 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ 2 / 2 3041 / 2955 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ 4 / 7 3495 / 3578 ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 7 / 7 3475 / 3513 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅

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