Skip to content

Conversation

@johannbotha
Copy link

@johannbotha johannbotha commented Jan 8, 2026

Summary

When using Kafka Connect with IBM MQ connectors, DSM was reporting incorrect queue names with schema-derived suffixes like _messagebody_0. For example:

  • Incorrect: trainmgt.dispatch.trnsheet.p30.v1.pub_messagebody_0
  • Expected: trainmgt.dispatch.trnsheet.p30.v1.pub

How IBM MQ and Kafka Connect are linked

Kafka Connect IBM MQ connectors (from Confluent or IBM) bridge IBM MQ and Kafka:

┌─────────────┐    ┌─────────────────────────┐    ┌─────────────┐
│   IBM MQ    │◄──►│  Kafka Connect Worker   │◄──►│    Kafka    │
│   Queue     │    │  (with MQ connector)    │    │    Topic    │
└─────────────┘    └─────────────────────────┘    └─────────────┘
                              │
                              │ Uses JMS API internally
                              │ (com.ibm.mq.jms.*)
                              ▼
                   ┌─────────────────────────┐
                   │  dd-trace-java agent    │
                   │  instruments JMS calls  │
                   └─────────────────────────┘

The connector internally uses JMS to communicate with IBM MQ. When dd-trace-java is attached to the Kafka Connect worker JVM, it instruments these JMS calls and creates DSM checkpoints using Queue.getQueueName().

Hypothesis

When the connector creates JMS Queue objects, somehow the queue name returned by getQueueName() includes schema-derived suffixes. This could happen if:

  1. Dynamic destination routing - connector derives queue name from Kafka record fields
  2. Schema field contamination - Kafka Connect's schema converters add _0 suffixes to union/optional fields like messageBody, and this leaks into the destination name
  3. Connector bug - the connector is constructing Queue objects with incorrect names

Why pure Java apps work

Pure Java apps create queues directly:

Queue queue = session.createQueue("my.actual.queue.name");
// getQueueName() returns "my.actual.queue.name" ✓

With Kafka Connect, the connector creates the Queue internally, and something in that process adds the suffix.

Changes

Added sanitization in JMSDecorator.getDestinationName() to strip these suffixes:

  • _messagebody_N
  • _text_N
  • _bytes_N
  • _map_N
  • _value_N

Uses a string-based approach with lastIndexOf() and regionMatches() for performance (avoids Pattern/Matcher overhead).

Test plan

  • Added unit tests in JMSDecoratorTest.groovy covering:
    • Customer's exact queue name from ticket
    • Various schema suffix patterns
    • Edge cases (no suffix, suffix not at end, unknown suffixes)
  • Verify with customer's environment (if possible)

References

  • Fixes Zendesk ticket #2429181
  • JIRA: DSMS-122

🤖 Generated with Claude Code

When using Kafka Connect with IBM MQ connectors, DSM was reporting
incorrect queue names with schema-derived suffixes like _messagebody_0.
This occurred because Kafka Connect schema converters add index suffixes
to field names for union/optional types.

This fix sanitizes queue/topic names to remove these suffixes:
- _messagebody_N
- _text_N
- _bytes_N
- _map_N
- _value_N

Fixes Zendesk ticket #2429181

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@pr-commenter
Copy link

pr-commenter bot commented Jan 8, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jj.botha/fix-dsm-ibmmq-kafka-connect-queue-name
git_commit_date 1767890844 1767992585
git_commit_sha 372ceb0 5d4bd10
release_version 1.59.0-SNAPSHOT~372ceb0ed6 1.59.0-SNAPSHOT~5d4bd10805
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1767994784 1767994784
ci_job_id 1340648712 1340648712
ci_pipeline_id 90020074 90020074
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-kgvmr11v 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-kgvmr11v 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 59 metrics, 6 unstable metrics.

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.083 s) : 0, 1083227
Total [baseline] (8.745 s) : 0, 8744817
Agent [candidate] (1.083 s) : 0, 1082741
Total [candidate] (8.737 s) : 0, 8736927
section iast
Agent [baseline] (1.221 s) : 0, 1220526
Total [baseline] (9.254 s) : 0, 9254333
Agent [candidate] (1.226 s) : 0, 1225755
Total [candidate] (9.312 s) : 0, 9311950
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.083 s -
Agent iast 1.221 s 137.299 ms (12.7%)
Total tracing 8.745 s -
Total iast 9.254 s 509.515 ms (5.8%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.083 s -
Agent iast 1.226 s 143.014 ms (13.2%)
Total tracing 8.737 s -
Total iast 9.312 s 575.023 ms (6.6%)
gantt
    title insecure-bank - break down per module: candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.187 ms) : 0, 1187
crashtracking [candidate] (1.188 ms) : 0, 1188
BytebuddyAgent [baseline] (651.157 ms) : 0, 651157
BytebuddyAgent [candidate] (651.288 ms) : 0, 651288
GlobalTracer [baseline] (281.936 ms) : 0, 281936
GlobalTracer [candidate] (281.962 ms) : 0, 281962
AppSec [baseline] (32.703 ms) : 0, 32703
AppSec [candidate] (32.538 ms) : 0, 32538
Debugger [baseline] (67.441 ms) : 0, 67441
Debugger [candidate] (67.028 ms) : 0, 67028
Remote Config [baseline] (619.197 µs) : 0, 619
Remote Config [candidate] (614.599 µs) : 0, 615
Telemetry [baseline] (8.954 ms) : 0, 8954
Telemetry [candidate] (8.878 ms) : 0, 8878
Flare Poller [baseline] (3.721 ms) : 0, 3721
Flare Poller [candidate] (3.683 ms) : 0, 3683
section iast
crashtracking [baseline] (1.188 ms) : 0, 1188
crashtracking [candidate] (1.182 ms) : 0, 1182
BytebuddyAgent [baseline] (789.751 ms) : 0, 789751
BytebuddyAgent [candidate] (793.032 ms) : 0, 793032
GlobalTracer [baseline] (255.449 ms) : 0, 255449
GlobalTracer [candidate] (256.529 ms) : 0, 256529
IAST [baseline] (27.066 ms) : 0, 27066
IAST [candidate] (27.033 ms) : 0, 27033
AppSec [baseline] (34.219 ms) : 0, 34219
AppSec [candidate] (35.462 ms) : 0, 35462
Debugger [baseline] (64.624 ms) : 0, 64624
Debugger [candidate] (64.302 ms) : 0, 64302
Remote Config [baseline] (617.818 µs) : 0, 618
Remote Config [candidate] (603.348 µs) : 0, 603
Telemetry [baseline] (8.484 ms) : 0, 8484
Telemetry [candidate] (8.551 ms) : 0, 8551
Flare Poller [baseline] (3.584 ms) : 0, 3584
Flare Poller [candidate] (3.514 ms) : 0, 3514
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.087 s) : 0, 1087135
Total [baseline] (10.733 s) : 0, 10733337
Agent [candidate] (1.083 s) : 0, 1082948
Total [candidate] (10.774 s) : 0, 10774473
section appsec
Agent [baseline] (1.276 s) : 0, 1275764
Total [baseline] (10.932 s) : 0, 10931832
Agent [candidate] (1.267 s) : 0, 1267297
Total [candidate] (10.951 s) : 0, 10950506
section iast
Agent [baseline] (1.241 s) : 0, 1240815
Total [baseline] (11.215 s) : 0, 11215337
Agent [candidate] (1.225 s) : 0, 1225372
Total [candidate] (11.221 s) : 0, 11221325
section profiling
Agent [baseline] (1.206 s) : 0, 1206282
Total [baseline] (10.998 s) : 0, 10998104
Agent [candidate] (1.209 s) : 0, 1208722
Total [candidate] (10.979 s) : 0, 10979176
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.087 s -
Agent appsec 1.276 s 188.628 ms (17.4%)
Agent iast 1.241 s 153.679 ms (14.1%)
Agent profiling 1.206 s 119.146 ms (11.0%)
Total tracing 10.733 s -
Total appsec 10.932 s 198.495 ms (1.8%)
Total iast 11.215 s 482.001 ms (4.5%)
Total profiling 10.998 s 264.767 ms (2.5%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.083 s -
Agent appsec 1.267 s 184.349 ms (17.0%)
Agent iast 1.225 s 142.424 ms (13.2%)
Agent profiling 1.209 s 125.774 ms (11.6%)
Total tracing 10.774 s -
Total appsec 10.951 s 176.033 ms (1.6%)
Total iast 11.221 s 446.852 ms (4.1%)
Total profiling 10.979 s 204.704 ms (1.9%)
gantt
    title petclinic - break down per module: candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.206 ms) : 0, 1206
crashtracking [candidate] (1.179 ms) : 0, 1179
BytebuddyAgent [baseline] (654.028 ms) : 0, 654028
BytebuddyAgent [candidate] (650.188 ms) : 0, 650188
GlobalTracer [baseline] (282.148 ms) : 0, 282148
GlobalTracer [candidate] (282.101 ms) : 0, 282101
AppSec [baseline] (32.56 ms) : 0, 32560
AppSec [candidate] (32.625 ms) : 0, 32625
Debugger [baseline] (68.123 ms) : 0, 68123
Debugger [candidate] (68.048 ms) : 0, 68048
Remote Config [baseline] (623.22 µs) : 0, 623
Remote Config [candidate] (625.398 µs) : 0, 625
Telemetry [baseline] (8.98 ms) : 0, 8980
Telemetry [candidate] (9.012 ms) : 0, 9012
Flare Poller [baseline] (3.699 ms) : 0, 3699
Flare Poller [candidate] (3.719 ms) : 0, 3719
section appsec
crashtracking [baseline] (1.196 ms) : 0, 1196
crashtracking [candidate] (1.189 ms) : 0, 1189
BytebuddyAgent [baseline] (697.927 ms) : 0, 697927
BytebuddyAgent [candidate] (692.594 ms) : 0, 692594
GlobalTracer [baseline] (260.577 ms) : 0, 260577
GlobalTracer [candidate] (258.293 ms) : 0, 258293
IAST [baseline] (24.935 ms) : 0, 24935
IAST [candidate] (24.678 ms) : 0, 24678
AppSec [baseline] (174.07 ms) : 0, 174070
AppSec [candidate] (174.76 ms) : 0, 174760
Debugger [baseline] (67.469 ms) : 0, 67469
Debugger [candidate] (66.411 ms) : 0, 66411
Remote Config [baseline] (753.565 µs) : 0, 754
Remote Config [candidate] (799.702 µs) : 0, 800
Telemetry [baseline] (9.389 ms) : 0, 9389
Telemetry [candidate] (9.429 ms) : 0, 9429
Flare Poller [baseline] (3.762 ms) : 0, 3762
Flare Poller [candidate] (3.723 ms) : 0, 3723
section iast
crashtracking [baseline] (1.199 ms) : 0, 1199
crashtracking [candidate] (1.187 ms) : 0, 1187
BytebuddyAgent [baseline] (803.212 ms) : 0, 803212
BytebuddyAgent [candidate] (791.875 ms) : 0, 791875
GlobalTracer [baseline] (258.876 ms) : 0, 258876
GlobalTracer [candidate] (256.326 ms) : 0, 256326
IAST [baseline] (27.425 ms) : 0, 27425
IAST [candidate] (27.122 ms) : 0, 27122
AppSec [baseline] (34.926 ms) : 0, 34926
AppSec [candidate] (34.556 ms) : 0, 34556
Debugger [baseline] (66.488 ms) : 0, 66488
Debugger [candidate] (66.123 ms) : 0, 66123
Remote Config [baseline] (579.998 µs) : 0, 580
Remote Config [candidate] (610.949 µs) : 0, 611
Telemetry [baseline] (8.629 ms) : 0, 8629
Telemetry [candidate] (8.491 ms) : 0, 8491
Flare Poller [baseline] (3.606 ms) : 0, 3606
Flare Poller [candidate] (3.585 ms) : 0, 3585
section profiling
crashtracking [baseline] (1.22 ms) : 0, 1220
crashtracking [candidate] (1.226 ms) : 0, 1226
BytebuddyAgent [baseline] (703.014 ms) : 0, 703014
BytebuddyAgent [candidate] (706.021 ms) : 0, 706021
GlobalTracer [baseline] (220.357 ms) : 0, 220357
GlobalTracer [candidate] (220.957 ms) : 0, 220957
AppSec [baseline] (31.987 ms) : 0, 31987
AppSec [candidate] (32.513 ms) : 0, 32513
Debugger [baseline] (68.497 ms) : 0, 68497
Debugger [candidate] (67.794 ms) : 0, 67794
Remote Config [baseline] (631.005 µs) : 0, 631
Remote Config [candidate] (630.836 µs) : 0, 631
Telemetry [baseline] (8.751 ms) : 0, 8751
Telemetry [candidate] (8.677 ms) : 0, 8677
Flare Poller [baseline] (3.617 ms) : 0, 3617
Flare Poller [candidate] (3.592 ms) : 0, 3592
ProfilingAgent [baseline] (98.367 ms) : 0, 98367
ProfilingAgent [candidate] (97.074 ms) : 0, 97074
Profiling [baseline] (98.961 ms) : 0, 98961
Profiling [candidate] (97.64 ms) : 0, 97640
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jj.botha/fix-dsm-ibmmq-kafka-connect-queue-name
git_commit_date 1767890844 1767992585
git_commit_sha 372ceb0 5d4bd10
release_version 1.59.0-SNAPSHOT~372ceb0ed6 1.59.0-SNAPSHOT~5d4bd10805
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1767995188 1767995188
ci_job_id 1340648713 1340648713
ci_pipeline_id 90020074 90020074
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-upmeduxp 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-upmeduxp 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 2 performance regressions! Performance is the same for 18 metrics, 16 unstable metrics.

scenario Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p95 Δ mean throughput candidate mean agg_http_req_duration_p50 candidate mean agg_http_req_duration_p95 candidate mean throughput baseline mean agg_http_req_duration_p50 baseline mean agg_http_req_duration_p95 baseline mean throughput
scenario:load:petclinic:code_origins:high_load worse
[+0.734ms; +1.463ms] or [+4.279%; +8.532%]
worse
[+0.596ms; +1.799ms] or [+2.106%; +6.354%]
unstable
[-42.040op/s; +14.665op/s] or [-15.886%; +5.542%]
18.239ms 29.510ms 250.938op/s 17.141ms 28.312ms 264.625op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6
    dateFormat X
    axisFormat %s
section baseline
no_agent (18.163 ms) : 17976, 18351
.   : milestone, 18163,
appsec (18.242 ms) : 18059, 18425
.   : milestone, 18242,
code_origins (17.631 ms) : 17457, 17805
.   : milestone, 17631,
iast (17.565 ms) : 17392, 17739
.   : milestone, 17565,
profiling (18.705 ms) : 18517, 18893
.   : milestone, 18705,
tracing (17.637 ms) : 17463, 17810
.   : milestone, 17637,
section candidate
no_agent (17.96 ms) : 17778, 18142
.   : milestone, 17960,
appsec (18.583 ms) : 18395, 18770
.   : milestone, 18583,
code_origins (18.596 ms) : 18410, 18782
.   : milestone, 18596,
iast (17.578 ms) : 17403, 17753
.   : milestone, 17578,
profiling (18.513 ms) : 18328, 18698
.   : milestone, 18513,
tracing (17.603 ms) : 17427, 17779
.   : milestone, 17603,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.163 ms [17.976 ms, 18.351 ms] -
appsec 18.242 ms [18.059 ms, 18.425 ms] 78.962 µs (0.4%)
code_origins 17.631 ms [17.457 ms, 17.805 ms] -532.785 µs (-2.9%)
iast 17.565 ms [17.392 ms, 17.739 ms] -598.158 µs (-3.3%)
profiling 18.705 ms [18.517 ms, 18.893 ms] 541.858 µs (3.0%)
tracing 17.637 ms [17.463 ms, 17.81 ms] -526.818 µs (-2.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 17.96 ms [17.778 ms, 18.142 ms] -
appsec 18.583 ms [18.395 ms, 18.77 ms] 622.589 µs (3.5%)
code_origins 18.596 ms [18.41 ms, 18.782 ms] 636.252 µs (3.5%)
iast 17.578 ms [17.403 ms, 17.753 ms] -382.252 µs (-2.1%)
profiling 18.513 ms [18.328 ms, 18.698 ms] 553.313 µs (3.1%)
tracing 17.603 ms [17.427 ms, 17.779 ms] -356.914 µs (-2.0%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.199 ms) : 1187, 1211
.   : milestone, 1199,
iast (3.126 ms) : 3089, 3163
.   : milestone, 3126,
iast_FULL (5.668 ms) : 5612, 5724
.   : milestone, 5668,
iast_GLOBAL (3.563 ms) : 3506, 3621
.   : milestone, 3563,
profiling (1.986 ms) : 1968, 2004
.   : milestone, 1986,
tracing (1.784 ms) : 1769, 1798
.   : milestone, 1784,
section candidate
no_agent (1.176 ms) : 1164, 1187
.   : milestone, 1176,
iast (3.155 ms) : 3114, 3197
.   : milestone, 3155,
iast_FULL (5.69 ms) : 5633, 5746
.   : milestone, 5690,
iast_GLOBAL (3.472 ms) : 3422, 3523
.   : milestone, 3472,
profiling (1.906 ms) : 1890, 1921
.   : milestone, 1906,
tracing (1.794 ms) : 1780, 1809
.   : milestone, 1794,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.199 ms [1.187 ms, 1.211 ms] -
iast 3.126 ms [3.089 ms, 3.163 ms] 1.927 ms (160.7%)
iast_FULL 5.668 ms [5.612 ms, 5.724 ms] 4.469 ms (372.8%)
iast_GLOBAL 3.563 ms [3.506 ms, 3.621 ms] 2.365 ms (197.2%)
profiling 1.986 ms [1.968 ms, 2.004 ms] 786.775 µs (65.6%)
tracing 1.784 ms [1.769 ms, 1.798 ms] 584.61 µs (48.8%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.176 ms [1.164 ms, 1.187 ms] -
iast 3.155 ms [3.114 ms, 3.197 ms] 1.979 ms (168.3%)
iast_FULL 5.69 ms [5.633 ms, 5.746 ms] 4.514 ms (383.9%)
iast_GLOBAL 3.472 ms [3.422 ms, 3.523 ms] 2.297 ms (195.3%)
profiling 1.906 ms [1.89 ms, 1.921 ms] 729.609 µs (62.0%)
tracing 1.794 ms [1.78 ms, 1.809 ms] 618.154 µs (52.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jj.botha/fix-dsm-ibmmq-kafka-connect-queue-name
git_commit_date 1767890844 1767992585
git_commit_sha 372ceb0 5d4bd10
release_version 1.59.0-SNAPSHOT~372ceb0ed6 1.59.0-SNAPSHOT~5d4bd10805
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1767995144 1767995144
ci_job_id 1340648714 1340648714
ci_pipeline_id 90020074 90020074
cpu_model Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-9djvoox2 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-9djvoox2 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.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.486 ms) : 1474, 1498
.   : milestone, 1486,
appsec (4.214 ms) : 3959, 4469
.   : milestone, 4214,
iast (2.576 ms) : 2473, 2678
.   : milestone, 2576,
iast_GLOBAL (2.64 ms) : 2537, 2743
.   : milestone, 2640,
profiling (2.442 ms) : 2354, 2531
.   : milestone, 2442,
tracing (2.367 ms) : 2284, 2450
.   : milestone, 2367,
section candidate
no_agent (1.486 ms) : 1474, 1498
.   : milestone, 1486,
appsec (4.206 ms) : 3951, 4461
.   : milestone, 4206,
iast (2.588 ms) : 2486, 2690
.   : milestone, 2588,
iast_GLOBAL (2.634 ms) : 2531, 2736
.   : milestone, 2634,
profiling (2.448 ms) : 2359, 2536
.   : milestone, 2448,
tracing (2.382 ms) : 2299, 2466
.   : milestone, 2382,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.486 ms [1.474 ms, 1.498 ms] -
appsec 4.214 ms [3.959 ms, 4.469 ms] 2.728 ms (183.6%)
iast 2.576 ms [2.473 ms, 2.678 ms] 1.09 ms (73.3%)
iast_GLOBAL 2.64 ms [2.537 ms, 2.743 ms] 1.154 ms (77.7%)
profiling 2.442 ms [2.354 ms, 2.531 ms] 956.134 µs (64.3%)
tracing 2.367 ms [2.284 ms, 2.45 ms] 880.991 µs (59.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.486 ms [1.474 ms, 1.498 ms] -
appsec 4.206 ms [3.951 ms, 4.461 ms] 2.72 ms (183.0%)
iast 2.588 ms [2.486 ms, 2.69 ms] 1.102 ms (74.2%)
iast_GLOBAL 2.634 ms [2.531 ms, 2.736 ms] 1.148 ms (77.2%)
profiling 2.448 ms [2.359 ms, 2.536 ms] 961.415 µs (64.7%)
tracing 2.382 ms [2.299 ms, 2.466 ms] 896.354 µs (60.3%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~5d4bd10805, baseline=1.59.0-SNAPSHOT~372ceb0ed6
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.232 s) : 15232000, 15232000
.   : milestone, 15232000,
appsec (14.523 s) : 14523000, 14523000
.   : milestone, 14523000,
iast (17.391 s) : 17391000, 17391000
.   : milestone, 17391000,
iast_GLOBAL (17.047 s) : 17047000, 17047000
.   : milestone, 17047000,
profiling (14.542 s) : 14542000, 14542000
.   : milestone, 14542000,
tracing (14.127 s) : 14127000, 14127000
.   : milestone, 14127000,
section candidate
no_agent (14.576 s) : 14576000, 14576000
.   : milestone, 14576000,
appsec (14.21 s) : 14210000, 14210000
.   : milestone, 14210000,
iast (17.753 s) : 17753000, 17753000
.   : milestone, 17753000,
iast_GLOBAL (16.683 s) : 16683000, 16683000
.   : milestone, 16683000,
profiling (14.106 s) : 14106000, 14106000
.   : milestone, 14106000,
tracing (14.087 s) : 14087000, 14087000
.   : milestone, 14087000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.232 s [15.232 s, 15.232 s] -
appsec 14.523 s [14.523 s, 14.523 s] -709.0 ms (-4.7%)
iast 17.391 s [17.391 s, 17.391 s] 2.159 s (14.2%)
iast_GLOBAL 17.047 s [17.047 s, 17.047 s] 1.815 s (11.9%)
profiling 14.542 s [14.542 s, 14.542 s] -690.0 ms (-4.5%)
tracing 14.127 s [14.127 s, 14.127 s] -1.105 s (-7.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.576 s [14.576 s, 14.576 s] -
appsec 14.21 s [14.21 s, 14.21 s] -366.0 ms (-2.5%)
iast 17.753 s [17.753 s, 17.753 s] 3.177 s (21.8%)
iast_GLOBAL 16.683 s [16.683 s, 16.683 s] 2.107 s (14.5%)
profiling 14.106 s [14.106 s, 14.106 s] -470.0 ms (-3.2%)
tracing 14.087 s [14.087 s, 14.087 s] -489.0 ms (-3.4%)

@PerfectSlayer PerfectSlayer added the tag: ai generated Largely based on code generated by an AI or LLM label Jan 9, 2026
// Pattern to match Kafka Connect schema-derived suffixes like _messagebody_0, _text_0, _bytes_0
// These suffixes are added by Kafka Connect converters when handling union/optional fields
private static final java.util.regex.Pattern KAFKA_CONNECT_SCHEMA_SUFFIX_PATTERN =
java.util.regex.Pattern.compile("_(?:messagebody|text|bytes|map|value)_\\d+$", java.util.regex.Pattern.CASE_INSENSITIVE);
Copy link
Contributor

Choose a reason for hiding this comment

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

🎯 suggestion:Pattern usage is not recommended for performance reason.
It seems the pattern you're looking for would be easy to find as the last characters would be a number.
I would implement the clean up using String.lastIndexOf() and String.substring() instead of Pattern, Matcher and String.replaceFirst() which also use a pattern internally.

Copy link
Author

Choose a reason for hiding this comment

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

Sounds good, updated it to no longer use a regex pattern.

…mance

Address review feedback to avoid Pattern/Matcher usage for performance reasons.
Use lastIndexOf() and regionMatches() instead of regex to strip Kafka Connect
schema-derived suffixes from queue names.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@johannbotha johannbotha marked this pull request as ready for review January 9, 2026 23:03
@johannbotha johannbotha requested a review from a team as a code owner January 9, 2026 23:03
@github-actions
Copy link
Contributor

github-actions bot commented Jan 9, 2026

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

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

Labels

tag: ai generated Largely based on code generated by an AI or LLM

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants