Skip to content

Conversation

@roisinlh
Copy link
Contributor

Adds Data Streams Monitoring support for IBM MQ via existing JMS instrumentation

What Does This Do

When existing config data_streams_enabled is true, this produces Data Streams Monitoring checkpoints in the JMS instrumentation in IBM MQ.

Motivation

IBM MQ is not currently supported in DSM in Java. It is a common pattern to use IBM MQ through JMS or Jakarta messaging. This allows those users to use DSM immediately while not changing behavior for other users.

Additional Notes

This support is currently limited to only create DSM checkpoints for JMS when the underlying technology is IBM MQ, to reduce test surface and speed initial release of IBM MQ support.

There is existing DSM support for most other technologies commonly used through JMS, so they would gain little from having support for other technologies enabled, but enabling them would require thorough testing to prevent double-reporting.

This implementation does not add DSM context propagation in JMS, as in other languages customers have seen production breakages from unexpected additional fields added to IBM MQ. Optional DSM context propagation may be added in a future followup, but without it we are still able to track checkpoints in the DSM map.

There is a slight modification to hold the raw queue name in addition to the formatted version (e.g. "queue:///DEV.QUEUE.1" rather than just the previous "Produced for Queue queue:///DEV.QUEUE.1") as that raw queue name is required when generating a DSM checkpoint. Other than that, changes are purely additive and shoulf only take effect when existing config data_streams_enabled is true.

Contributor Checklist

Jira ticket: [PROJ-IDENT]

…rumentation

This support is currently limited to only create DSM checkpoints for
JMS when the underlying technology is IBM MQ, to reduce test surface
and speed initial release of IBM MQ support.

There is existing DSM support for most other technologies commonly
used through JMS, so they would gain little from having support for
other technologies enabled, but enabling them would require thorough
testing to prevent double-reporting.

This implementation does not add DSM context propagation in JMS, as in
other languages customers have seen production breakages from
unexpected additional fields added to IBM MQ. Optional DSM context
propagation may be added in a future followup, but without it we are
still able to track checkpoints in the DSM map.

There is a slight modification to hold the raw queue name in addition
to the formatted version (e.g. "queue:///DEV.QUEUE.1" rather than just
the previous "Produced for Queue queue:///DEV.QUEUE.1") as that raw
queue name is required when generating a DSM checkpoint. Other than
that, changes are purely additive and shoulf only take effect when
existing config `data_streams_enabled` is true.
@roisinlh roisinlh added the type: enhancement Enhancements and improvements label Oct 16, 2025
@datadog-official
Copy link

datadog-official bot commented Oct 16, 2025

🎯 Code Coverage
Patch Coverage: 0.00%
Total Coverage: 59.81% (-0.02%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 2b1ed9b | Docs | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Oct 16, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master roisin.luddyhughes/dsm-jms-checkpointing
git_commit_date 1760635008 1760636638
git_commit_sha c85d09f 2b1ed9b
release_version 1.55.0-SNAPSHOT~c85d09f004 1.55.0-SNAPSHOT~2b1ed9b178
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1760638365 1760638365
ci_job_id 1183537247 1183537247
ci_pipeline_id 79540719 79540719
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-yzoxrcs9 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-yzoxrcs9 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 58 metrics, 7 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.022 s) : 0, 1021714
Total [baseline] (10.629 s) : 0, 10628973
Agent [candidate] (1.015 s) : 0, 1015243
Total [candidate] (10.627 s) : 0, 10626944
section appsec
Agent [baseline] (1.189 s) : 0, 1189490
Total [baseline] (11.074 s) : 0, 11073810
Agent [candidate] (1.191 s) : 0, 1190658
Total [candidate] (10.93 s) : 0, 10930152
section iast
Agent [baseline] (1.153 s) : 0, 1153478
Total [baseline] (11.078 s) : 0, 11078432
Agent [candidate] (1.157 s) : 0, 1156566
Total [candidate] (11.047 s) : 0, 11046824
section profiling
Agent [baseline] (1.158 s) : 0, 1158145
Total [baseline] (11.017 s) : 0, 11016966
Agent [candidate] (1.159 s) : 0, 1158997
Total [candidate] (11.048 s) : 0, 11048018
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.022 s -
Agent appsec 1.189 s 167.777 ms (16.4%)
Agent iast 1.153 s 131.765 ms (12.9%)
Agent profiling 1.158 s 136.432 ms (13.4%)
Total tracing 10.629 s -
Total appsec 11.074 s 444.837 ms (4.2%)
Total iast 11.078 s 449.459 ms (4.2%)
Total profiling 11.017 s 387.993 ms (3.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.015 s -
Agent appsec 1.191 s 175.415 ms (17.3%)
Agent iast 1.157 s 141.323 ms (13.9%)
Agent profiling 1.159 s 143.754 ms (14.2%)
Total tracing 10.627 s -
Total appsec 10.93 s 303.208 ms (2.9%)
Total iast 11.047 s 419.88 ms (4.0%)
Total profiling 11.048 s 421.074 ms (4.0%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.479 ms) : 0, 1479
crashtracking [candidate] (1.47 ms) : 0, 1470
BytebuddyAgent [baseline] (696.102 ms) : 0, 696102
BytebuddyAgent [candidate] (691.081 ms) : 0, 691081
GlobalTracer [baseline] (242.826 ms) : 0, 242826
GlobalTracer [candidate] (241.256 ms) : 0, 241256
AppSec [baseline] (32.636 ms) : 0, 32636
AppSec [candidate] (32.345 ms) : 0, 32345
Debugger [baseline] (6.455 ms) : 0, 6455
Debugger [candidate] (6.377 ms) : 0, 6377
Remote Config [baseline] (701.491 µs) : 0, 701
Remote Config [candidate] (691.844 µs) : 0, 692
Telemetry [baseline] (9.284 ms) : 0, 9284
Telemetry [candidate] (9.338 ms) : 0, 9338
Flare Poller [baseline] (10.939 ms) : 0, 10939
Flare Poller [candidate] (11.607 ms) : 0, 11607
section appsec
crashtracking [baseline] (1.462 ms) : 0, 1462
crashtracking [candidate] (1.458 ms) : 0, 1458
BytebuddyAgent [baseline] (714.439 ms) : 0, 714439
BytebuddyAgent [candidate] (714.794 ms) : 0, 714794
GlobalTracer [baseline] (233.569 ms) : 0, 233569
GlobalTracer [candidate] (234.054 ms) : 0, 234054
IAST [baseline] (24.691 ms) : 0, 24691
IAST [candidate] (24.68 ms) : 0, 24680
AppSec [baseline] (175.389 ms) : 0, 175389
AppSec [candidate] (175.525 ms) : 0, 175525
Debugger [baseline] (6.042 ms) : 0, 6042
Debugger [candidate] (6.165 ms) : 0, 6165
Remote Config [baseline] (624.118 µs) : 0, 624
Remote Config [candidate] (626.642 µs) : 0, 627
Telemetry [baseline] (8.372 ms) : 0, 8372
Telemetry [candidate] (8.426 ms) : 0, 8426
Flare Poller [baseline] (3.888 ms) : 0, 3888
Flare Poller [candidate] (3.916 ms) : 0, 3916
section iast
crashtracking [baseline] (1.462 ms) : 0, 1462
crashtracking [candidate] (1.46 ms) : 0, 1460
BytebuddyAgent [baseline] (816.991 ms) : 0, 816991
BytebuddyAgent [candidate] (819.497 ms) : 0, 819497
GlobalTracer [baseline] (231.989 ms) : 0, 231989
GlobalTracer [candidate] (232.146 ms) : 0, 232146
IAST [baseline] (26.613 ms) : 0, 26613
IAST [candidate] (26.704 ms) : 0, 26704
AppSec [baseline] (35.139 ms) : 0, 35139
AppSec [candidate] (35.521 ms) : 0, 35521
Debugger [baseline] (6.182 ms) : 0, 6182
Debugger [candidate] (6.189 ms) : 0, 6189
Remote Config [baseline] (624.219 µs) : 0, 624
Remote Config [candidate] (625.303 µs) : 0, 625
Telemetry [baseline] (8.774 ms) : 0, 8774
Telemetry [candidate] (8.681 ms) : 0, 8681
Flare Poller [baseline] (4.205 ms) : 0, 4205
Flare Poller [candidate] (4.284 ms) : 0, 4284
section profiling
crashtracking [baseline] (1.416 ms) : 0, 1416
crashtracking [candidate] (1.42 ms) : 0, 1420
BytebuddyAgent [baseline] (719.159 ms) : 0, 719159
BytebuddyAgent [candidate] (719.282 ms) : 0, 719282
GlobalTracer [baseline] (217.308 ms) : 0, 217308
GlobalTracer [candidate] (217.198 ms) : 0, 217198
AppSec [baseline] (32.292 ms) : 0, 32292
AppSec [candidate] (32.14 ms) : 0, 32140
Debugger [baseline] (7.31 ms) : 0, 7310
Debugger [candidate] (6.494 ms) : 0, 6494
Remote Config [baseline] (766.826 µs) : 0, 767
Remote Config [candidate] (756.452 µs) : 0, 756
Telemetry [baseline] (15.005 ms) : 0, 15005
Telemetry [candidate] (15.855 ms) : 0, 15855
Flare Poller [baseline] (4.133 ms) : 0, 4133
Flare Poller [candidate] (4.151 ms) : 0, 4151
ProfilingAgent [baseline] (107.812 ms) : 0, 107812
ProfilingAgent [candidate] (107.987 ms) : 0, 107987
Profiling [baseline] (108.812 ms) : 0, 108812
Profiling [candidate] (109.758 ms) : 0, 109758
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.021 s) : 0, 1020909
Total [baseline] (8.654 s) : 0, 8653872
Agent [candidate] (1.015 s) : 0, 1015241
Total [candidate] (8.657 s) : 0, 8657447
section iast
Agent [baseline] (1.148 s) : 0, 1147813
Total [baseline] (9.281 s) : 0, 9280899
Agent [candidate] (1.151 s) : 0, 1150686
Total [candidate] (9.265 s) : 0, 9264587
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.021 s -
Agent iast 1.148 s 126.904 ms (12.4%)
Total tracing 8.654 s -
Total iast 9.281 s 627.027 ms (7.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.015 s -
Agent iast 1.151 s 135.444 ms (13.3%)
Total tracing 8.657 s -
Total iast 9.265 s 607.14 ms (7.0%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.476 ms) : 0, 1476
crashtracking [candidate] (1.447 ms) : 0, 1447
BytebuddyAgent [baseline] (696.626 ms) : 0, 696626
BytebuddyAgent [candidate] (691.158 ms) : 0, 691158
GlobalTracer [baseline] (242.705 ms) : 0, 242705
GlobalTracer [candidate] (241.001 ms) : 0, 241001
AppSec [baseline] (32.747 ms) : 0, 32747
AppSec [candidate] (32.516 ms) : 0, 32516
Debugger [baseline] (6.464 ms) : 0, 6464
Debugger [candidate] (6.439 ms) : 0, 6439
Remote Config [baseline] (709.664 µs) : 0, 710
Remote Config [candidate] (708.305 µs) : 0, 708
Telemetry [baseline] (9.295 ms) : 0, 9295
Telemetry [candidate] (9.172 ms) : 0, 9172
Flare Poller [baseline] (9.679 ms) : 0, 9679
Flare Poller [candidate] (11.662 ms) : 0, 11662
section iast
crashtracking [baseline] (1.501 ms) : 0, 1501
crashtracking [candidate] (1.474 ms) : 0, 1474
BytebuddyAgent [baseline] (813.454 ms) : 0, 813454
BytebuddyAgent [candidate] (814.86 ms) : 0, 814860
GlobalTracer [baseline] (230.294 ms) : 0, 230294
GlobalTracer [candidate] (231.534 ms) : 0, 231534
IAST [baseline] (26.371 ms) : 0, 26371
IAST [candidate] (26.599 ms) : 0, 26599
AppSec [baseline] (35.025 ms) : 0, 35025
AppSec [candidate] (35.014 ms) : 0, 35014
Debugger [baseline] (6.138 ms) : 0, 6138
Debugger [candidate] (6.156 ms) : 0, 6156
Remote Config [baseline] (611.64 µs) : 0, 612
Remote Config [candidate] (629.173 µs) : 0, 629
Telemetry [baseline] (8.701 ms) : 0, 8701
Telemetry [candidate] (8.677 ms) : 0, 8677
Flare Poller [baseline] (4.239 ms) : 0, 4239
Flare Poller [candidate] (4.232 ms) : 0, 4232
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master roisin.luddyhughes/dsm-jms-checkpointing
git_commit_date 1760635008 1760636638
git_commit_sha c85d09f 2b1ed9b
release_version 1.55.0-SNAPSHOT~c85d09f004 1.55.0-SNAPSHOT~2b1ed9b178
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1760638033 1760638033
ci_job_id 1183537248 1183537248
ci_pipeline_id 79540719 79540719
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-5kntn1v6 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-5kntn1v6 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 4 performance improvements and 3 performance regressions! Performance is the same for 5 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:iast_FULL:high_load better
[-910.533µs; -307.383µs] or [-6.325%; -2.135%]
unstable
[-19.415op/s; +48.102op/s] or [-5.999%; +14.864%]
13.788ms 337.969op/s 14.397ms 323.625op/s
scenario:load:insecure-bank:profiling:high_load better
[-782.834µs; -475.026µs] or [-8.451%; -5.128%]
unstable
[-24.418op/s; +96.981op/s] or [-4.873%; +19.354%]
8.634ms 537.375op/s 9.263ms 501.094op/s
scenario:load:insecure-bank:iast:high_load worse
[+317.553µs; +686.128µs] or [+3.165%; +6.839%]
unstable
[-71.106op/s; +27.231op/s] or [-15.360%; +5.882%]
10.535ms 441.000op/s 10.033ms 462.938op/s
scenario:load:insecure-bank:iast_GLOBAL:high_load worse
[+0.795ms; +1.211ms] or [+7.681%; +11.691%]
unstable
[-85.843op/s; +7.655op/s] or [-19.132%; +1.706%]
11.359ms 409.594op/s 10.356ms 448.688op/s
scenario:load:petclinic:iast:high_load worse
[+1.034ms; +1.860ms] or [+2.362%; +4.248%]
unstable
[-11.110op/s; +4.210op/s] or [-10.395%; +3.939%]
45.232ms 103.425op/s 43.785ms 106.875op/s
scenario:load:petclinic:tracing:high_load better
[-2.942ms; -2.120ms] or [-6.466%; -4.661%]
unstable
[-1.480op/s; +13.730op/s] or [-1.439%; +13.350%]
42.962ms 108.975op/s 45.493ms 102.850op/s
scenario:load:petclinic:profiling:high_load better
[-2.003ms; -1.039ms] or [-4.013%; -2.081%]
unstable
[-4.150op/s; +10.025op/s] or [-4.425%; +10.690%]
48.397ms 96.713op/s 49.918ms 93.775op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.454 ms) : 4396, 4511
.   : milestone, 4454,
iast (10.033 ms) : 9867, 10199
.   : milestone, 10033,
iast_FULL (14.397 ms) : 14111, 14682
.   : milestone, 14397,
iast_GLOBAL (10.356 ms) : 10176, 10536
.   : milestone, 10356,
profiling (9.263 ms) : 9121, 9405
.   : milestone, 9263,
tracing (7.617 ms) : 7509, 7726
.   : milestone, 7617,
section candidate
no_agent (4.433 ms) : 4381, 4485
.   : milestone, 4433,
iast (10.535 ms) : 10359, 10711
.   : milestone, 10535,
iast_FULL (13.788 ms) : 13513, 14063
.   : milestone, 13788,
iast_GLOBAL (11.359 ms) : 11154, 11564
.   : milestone, 11359,
profiling (8.634 ms) : 8490, 8778
.   : milestone, 8634,
tracing (7.603 ms) : 7497, 7709
.   : milestone, 7603,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.454 ms [4.396 ms, 4.511 ms] -
iast 10.033 ms [9.867 ms, 10.199 ms] 5.579 ms (125.3%)
iast_FULL 14.397 ms [14.111 ms, 14.682 ms] 9.943 ms (223.3%)
iast_GLOBAL 10.356 ms [10.176 ms, 10.536 ms] 5.902 ms (132.5%)
profiling 9.263 ms [9.121 ms, 9.405 ms] 4.809 ms (108.0%)
tracing 7.617 ms [7.509 ms, 7.726 ms] 3.164 ms (71.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.433 ms [4.381 ms, 4.485 ms] -
iast 10.535 ms [10.359 ms, 10.711 ms] 6.102 ms (137.7%)
iast_FULL 13.788 ms [13.513 ms, 14.063 ms] 9.355 ms (211.0%)
iast_GLOBAL 11.359 ms [11.154 ms, 11.564 ms] 6.926 ms (156.2%)
profiling 8.634 ms [8.49 ms, 8.778 ms] 4.201 ms (94.8%)
tracing 7.603 ms [7.497 ms, 7.709 ms] 3.17 ms (71.5%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004
    dateFormat X
    axisFormat %s
section baseline
no_agent (37.201 ms) : 36906, 37496
.   : milestone, 37201,
appsec (48.832 ms) : 48392, 49272
.   : milestone, 48832,
code_origins (44.185 ms) : 43804, 44567
.   : milestone, 44185,
iast (43.785 ms) : 43404, 44165
.   : milestone, 43785,
profiling (49.918 ms) : 49456, 50380
.   : milestone, 49918,
tracing (45.493 ms) : 45097, 45889
.   : milestone, 45493,
section candidate
no_agent (38.068 ms) : 37761, 38374
.   : milestone, 38068,
appsec (49.522 ms) : 49084, 49960
.   : milestone, 49522,
code_origins (43.596 ms) : 43221, 43971
.   : milestone, 43596,
iast (45.232 ms) : 44845, 45619
.   : milestone, 45232,
profiling (48.397 ms) : 47963, 48831
.   : milestone, 48397,
tracing (42.962 ms) : 42595, 43329
.   : milestone, 42962,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.201 ms [36.906 ms, 37.496 ms] -
appsec 48.832 ms [48.392 ms, 49.272 ms] 11.631 ms (31.3%)
code_origins 44.185 ms [43.804 ms, 44.567 ms] 6.985 ms (18.8%)
iast 43.785 ms [43.404 ms, 44.165 ms] 6.584 ms (17.7%)
profiling 49.918 ms [49.456 ms, 50.38 ms] 12.717 ms (34.2%)
tracing 45.493 ms [45.097 ms, 45.889 ms] 8.293 ms (22.3%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 38.068 ms [37.761 ms, 38.374 ms] -
appsec 49.522 ms [49.084 ms, 49.96 ms] 11.454 ms (30.1%)
code_origins 43.596 ms [43.221 ms, 43.971 ms] 5.528 ms (14.5%)
iast 45.232 ms [44.845 ms, 45.619 ms] 7.164 ms (18.8%)
profiling 48.397 ms [47.963 ms, 48.831 ms] 10.329 ms (27.1%)
tracing 42.962 ms [42.595 ms, 43.329 ms] 4.895 ms (12.9%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master roisin.luddyhughes/dsm-jms-checkpointing
git_commit_date 1760635008 1760636638
git_commit_sha c85d09f 2b1ed9b
release_version 1.55.0-SNAPSHOT~c85d09f004 1.55.0-SNAPSHOT~2b1ed9b178
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1760638548 1760638548
ci_job_id 1183537249 1183537249
ci_pipeline_id 79540719 79540719
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-75rlg5mo 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-75rlg5mo 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics.

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.48 ms) : 1468, 1492
.   : milestone, 1480,
appsec (2.471 ms) : 2420, 2522
.   : milestone, 2471,
iast (2.215 ms) : 2151, 2279
.   : milestone, 2215,
iast_GLOBAL (2.26 ms) : 2196, 2324
.   : milestone, 2260,
profiling (2.053 ms) : 2001, 2104
.   : milestone, 2053,
tracing (2.028 ms) : 1978, 2078
.   : milestone, 2028,
section candidate
no_agent (1.477 ms) : 1465, 1488
.   : milestone, 1477,
appsec (3.721 ms) : 3504, 3938
.   : milestone, 3721,
iast (2.224 ms) : 2161, 2288
.   : milestone, 2224,
iast_GLOBAL (2.256 ms) : 2192, 2320
.   : milestone, 2256,
profiling (2.05 ms) : 1999, 2101
.   : milestone, 2050,
tracing (2.025 ms) : 1976, 2075
.   : milestone, 2025,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.48 ms [1.468 ms, 1.492 ms] -
appsec 2.471 ms [2.42 ms, 2.522 ms] 991.263 µs (67.0%)
iast 2.215 ms [2.151 ms, 2.279 ms] 735.081 µs (49.7%)
iast_GLOBAL 2.26 ms [2.196 ms, 2.324 ms] 779.93 µs (52.7%)
profiling 2.053 ms [2.001 ms, 2.104 ms] 572.686 µs (38.7%)
tracing 2.028 ms [1.978 ms, 2.078 ms] 547.971 µs (37.0%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.477 ms [1.465 ms, 1.488 ms] -
appsec 3.721 ms [3.504 ms, 3.938 ms] 2.245 ms (152.0%)
iast 2.224 ms [2.161 ms, 2.288 ms] 747.79 µs (50.6%)
iast_GLOBAL 2.256 ms [2.192 ms, 2.32 ms] 779.652 µs (52.8%)
profiling 2.05 ms [1.999 ms, 2.101 ms] 573.244 µs (38.8%)
tracing 2.025 ms [1.976 ms, 2.075 ms] 548.796 µs (37.2%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~2b1ed9b178, baseline=1.55.0-SNAPSHOT~c85d09f004
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.051 s) : 15051000, 15051000
.   : milestone, 15051000,
appsec (15.256 s) : 15256000, 15256000
.   : milestone, 15256000,
iast (18.498 s) : 18498000, 18498000
.   : milestone, 18498000,
iast_GLOBAL (18.154 s) : 18154000, 18154000
.   : milestone, 18154000,
profiling (15.571 s) : 15571000, 15571000
.   : milestone, 15571000,
tracing (14.803 s) : 14803000, 14803000
.   : milestone, 14803000,
section candidate
no_agent (14.982 s) : 14982000, 14982000
.   : milestone, 14982000,
appsec (15.145 s) : 15145000, 15145000
.   : milestone, 15145000,
iast (18.938 s) : 18938000, 18938000
.   : milestone, 18938000,
iast_GLOBAL (18.277 s) : 18277000, 18277000
.   : milestone, 18277000,
profiling (15.333 s) : 15333000, 15333000
.   : milestone, 15333000,
tracing (15.128 s) : 15128000, 15128000
.   : milestone, 15128000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.051 s [15.051 s, 15.051 s] -
appsec 15.256 s [15.256 s, 15.256 s] 205.0 ms (1.4%)
iast 18.498 s [18.498 s, 18.498 s] 3.447 s (22.9%)
iast_GLOBAL 18.154 s [18.154 s, 18.154 s] 3.103 s (20.6%)
profiling 15.571 s [15.571 s, 15.571 s] 520.0 ms (3.5%)
tracing 14.803 s [14.803 s, 14.803 s] -248.0 ms (-1.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.982 s [14.982 s, 14.982 s] -
appsec 15.145 s [15.145 s, 15.145 s] 163.0 ms (1.1%)
iast 18.938 s [18.938 s, 18.938 s] 3.956 s (26.4%)
iast_GLOBAL 18.277 s [18.277 s, 18.277 s] 3.295 s (22.0%)
profiling 15.333 s [15.333 s, 15.333 s] 351.0 ms (2.3%)
tracing 15.128 s [15.128 s, 15.128 s] 146.0 ms (1.0%)

@PerfectSlayer PerfectSlayer added the comp: data streams Data Streams Monitoring label Oct 16, 2025
@roisinlh roisinlh marked this pull request as ready for review October 16, 2025 14:43
@roisinlh roisinlh requested review from a team as code owners October 16, 2025 14:43
@roisinlh roisinlh requested a review from amarziali October 16, 2025 14:43
Copy link
Contributor

@amarziali amarziali left a comment

Choose a reason for hiding this comment

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

Globally the feature looks ok. String comparisons must use equals in this case


if (Config.get().isDataStreamsEnabled()) {
final String tech = messageTechnology(message);
if (tech == "ibmmq") { // Initial release only supports DSM in JMS for IBM MQ
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (tech == "ibmmq") { // Initial release only supports DSM in JMS for IBM MQ
if ("ibmmq".equals(tech)) { // Initial release only supports DSM in JMS for IBM MQ

Destination destination = producer.getDestination();
boolean isQueue = PRODUCER_DECORATE.isQueue(destination);
destinationName = PRODUCER_DECORATE.getDestinationName(destination);
if (null != producerState) {
Copy link
Contributor

Choose a reason for hiding this comment

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

I will move that higher in the try otherwise if the other methods throw the resource name gets a chance to be set as before

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Adjusted the flow to ensure that happens before anything that could throw. The two lines of setting the destination name afterwards are duplicated (to allow static checking to be sure resourceName is never used unassigned) but it will never follow both destination name branches in a single run at runtime (and the common case can now skip having to check isQueue).

&& !destinationName.isEmpty()
&& Config.get().isDataStreamsEnabled()) {
final String tech = messageTechnology(message);
if (tech == "ibmmq") { // Initial release only supports DSM in JMS for IBM MQ
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
if (tech == "ibmmq") { // Initial release only supports DSM in JMS for IBM MQ
if ("ibmmq".equals(tech)) { // Initial release only supports DSM in JMS for IBM MQ

Copy link
Contributor

@amarziali amarziali left a comment

Choose a reason for hiding this comment

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

Thanks for the improvement. I see that IBM MQ has docker container available. Hence I would suggest covering this feature with a testcontainer test in the future

@roisinlh
Copy link
Contributor Author

I see that IBM MQ has docker container available. Hence I would suggest covering this feature with a testcontainer test in the future

We discussed this offline, copying here for visibility:

I used the IBM MQ docker image for local testing, but unfortunately the license restrictions on it are very strict and only permit running it locally on a developer-owned machine, so it can't be used in tests that would be automatically run in CI.

This was discussed with legal when adding IBM MQ support for the dotnet tracer and the compromise solution was to include directions on how to test locally with the docker image so humans can replicate those tests in the future. I plan to add a followup with those directions.

@roisinlh
Copy link
Contributor Author

/merge

@dd-devflow-routing-codex
Copy link

dd-devflow-routing-codex bot commented Oct 17, 2025

View all feedbacks in Devflow UI.

2025-10-17 13:28:03 UTC ℹ️ Start processing command /merge


2025-10-17 13:28:07 UTC ℹ️ MergeQueue: queue is disabled

Added to the queue but the mergequeue is not enabled for now.


2025-10-17 13:28:54 UTC ⚠️ MergeQueue: This merge request was unqueued

[email protected] unqueued this merge request

@github-actions
Copy link
Contributor

github-actions bot commented Oct 17, 2025

PR Blocked - Invalid Label

The pull request introduced unexpected labels:

  • mergequeue-status: removed

This PR is blocked until:

  1. The invalid labels are deleted, and
  2. A maintainer deletes this comment to unblock the PR

Note: Simply removing labels from the pull request is not enough - a maintainer must remove the label and delete this comment to remove the block.

@roisinlh
Copy link
Contributor Author

/merge --cancel

@dd-devflow-routing-codex
Copy link

dd-devflow-routing-codex bot commented Oct 17, 2025

View all feedbacks in Devflow UI.

2025-10-17 13:28:39 UTC ℹ️ Start processing command /merge --cancel

@amarziali amarziali merged commit 9c1ca62 into master Oct 17, 2025
536 of 540 checks passed
@amarziali amarziali deleted the roisin.luddyhughes/dsm-jms-checkpointing branch October 17, 2025 13:29
@github-actions github-actions bot added this to the 1.55.0 milestone Oct 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: data streams Data Streams Monitoring type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants