Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Instrument Mulesoft 4.5.0+ #7981

Merged
merged 24 commits into from
Dec 4, 2024
Merged

Instrument Mulesoft 4.5.0+ #7981

merged 24 commits into from
Dec 4, 2024

Conversation

amarziali
Copy link
Collaborator

@amarziali amarziali commented Nov 20, 2024

What Does This Do

This PR adds support for tracing flows in mulesoft 4.5.0 onward. We previously had a mulesoft 4 instrumentation that customers where not using and that offered only a best effort context propagation of scopes.

This new instrumentation, still in beta hence disabled by default, plugs directly on the mule internal observability engine (EventTracer) available starting from 4.5.0. It plugs on top transparently regardless the fact that the span export functionality is enabled or not on the mule instance.

The spans that are created will have mule.action as operation name and the resource name will have the first part that's original coming from the mule tracing engine (i.e. mule:flow or http:request) followed by the meaningful name of the component being traced (usually the doc:name xml tag on the mule flow definition that's assigned by the user).

To activate this :

  • Add -Ddd.integration.mule.enabled=true among the JVM options
  • Add the env variable DD_INTEGRATION_MULE_ENABLED=true

Activating this integration automatically implies also activating grizzly-filterchain and grizzly-client since they are required to trace inbound/outbound http calls in mule

Some example traces:

HTTP server, API kit, JDBC and HTTP client

image

HTTP to JMS
image

Motivation

Additional Notes

Contributor Checklist

Jira ticket: AIDM-328

@pr-commenter
Copy link

pr-commenter bot commented Nov 20, 2024

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/mulesoft
git_commit_date 1733246077 1733246545
git_commit_sha 7698f2f 9718fe6
release_version 1.44.0-SNAPSHOT~7698f2f594 1.44.0-SNAPSHOT~9718fe6e44
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1733248967 1733248967
ci_job_id 725944237 725944237
ci_pipeline_id 50283847 50283847
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
module Agent Agent
parent None None
variant iast iast

Summary

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

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.094 s) : 0, 1094006
Total [baseline] (8.68 s) : 0, 8680205
Agent [candidate] (1.098 s) : 0, 1097764
Total [candidate] (8.683 s) : 0, 8682860
section iast
Agent [baseline] (1.22 s) : 0, 1220321
Total [baseline] (9.217 s) : 0, 9216883
Agent [candidate] (1.23 s) : 0, 1229937
Total [candidate] (9.258 s) : 0, 9257994
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.219 s) : 0, 1218616
Total [baseline] (9.209 s) : 0, 9208652
Agent [candidate] (1.218 s) : 0, 1218235
Total [candidate] (9.169 s) : 0, 9168923
section iast_TELEMETRY_OFF
Agent [baseline] (1.218 s) : 0, 1217535
Total [baseline] (9.198 s) : 0, 9198213
Agent [candidate] (1.218 s) : 0, 1217699
Total [candidate] (9.248 s) : 0, 9247907
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.094 s -
Agent iast 1.22 s 126.315 ms (11.5%)
Agent iast_HARDCODED_SECRET_DISABLED 1.219 s 124.61 ms (11.4%)
Agent iast_TELEMETRY_OFF 1.218 s 123.529 ms (11.3%)
Total tracing 8.68 s -
Total iast 9.217 s 536.679 ms (6.2%)
Total iast_HARDCODED_SECRET_DISABLED 9.209 s 528.447 ms (6.1%)
Total iast_TELEMETRY_OFF 9.198 s 518.008 ms (6.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.098 s -
Agent iast 1.23 s 132.172 ms (12.0%)
Agent iast_HARDCODED_SECRET_DISABLED 1.218 s 120.47 ms (11.0%)
Agent iast_TELEMETRY_OFF 1.218 s 119.935 ms (10.9%)
Total tracing 8.683 s -
Total iast 9.258 s 575.134 ms (6.6%)
Total iast_HARDCODED_SECRET_DISABLED 9.169 s 486.064 ms (5.6%)
Total iast_TELEMETRY_OFF 9.248 s 565.047 ms (6.5%)
gantt
    title insecure-bank - break down per module: candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (696.133 ms) : 0, 696133
BytebuddyAgent [candidate] (700.433 ms) : 0, 700433
GlobalTracer [baseline] (318.581 ms) : 0, 318581
GlobalTracer [candidate] (317.85 ms) : 0, 317850
AppSec [baseline] (54.899 ms) : 0, 54899
AppSec [candidate] (55.015 ms) : 0, 55015
Remote Config [baseline] (690.743 µs) : 0, 691
Remote Config [candidate] (680.456 µs) : 0, 680
Telemetry [baseline] (9.961 ms) : 0, 9961
Telemetry [candidate] (9.985 ms) : 0, 9985
section iast
BytebuddyAgent [baseline] (813.408 ms) : 0, 813408
BytebuddyAgent [candidate] (819.644 ms) : 0, 819644
GlobalTracer [baseline] (306.246 ms) : 0, 306246
GlobalTracer [candidate] (308.631 ms) : 0, 308631
AppSec [baseline] (57.904 ms) : 0, 57904
AppSec [candidate] (57.588 ms) : 0, 57588
IAST [baseline] (20.881 ms) : 0, 20881
IAST [candidate] (21.93 ms) : 0, 21930
Remote Config [baseline] (639.106 µs) : 0, 639
Remote Config [candidate] (646.258 µs) : 0, 646
Telemetry [baseline] (7.518 ms) : 0, 7518
Telemetry [candidate] (7.625 ms) : 0, 7625
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (811.595 ms) : 0, 811595
BytebuddyAgent [candidate] (811.523 ms) : 0, 811523
GlobalTracer [baseline] (306.226 ms) : 0, 306226
GlobalTracer [candidate] (306.004 ms) : 0, 306004
AppSec [baseline] (58.189 ms) : 0, 58189
AppSec [candidate] (57.965 ms) : 0, 57965
IAST [baseline] (20.802 ms) : 0, 20802
IAST [candidate] (20.8 ms) : 0, 20800
Remote Config [baseline] (615.588 µs) : 0, 616
Remote Config [candidate] (623.489 µs) : 0, 623
Telemetry [baseline] (7.453 ms) : 0, 7453
Telemetry [candidate] (7.516 ms) : 0, 7516
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (810.386 ms) : 0, 810386
BytebuddyAgent [candidate] (810.825 ms) : 0, 810825
GlobalTracer [baseline] (306.505 ms) : 0, 306505
GlobalTracer [candidate] (305.842 ms) : 0, 305842
AppSec [baseline] (58.534 ms) : 0, 58534
AppSec [candidate] (57.579 ms) : 0, 57579
IAST [baseline] (20.412 ms) : 0, 20412
IAST [candidate] (21.423 ms) : 0, 21423
Remote Config [baseline] (630.919 µs) : 0, 631
Remote Config [candidate] (643.489 µs) : 0, 643
Telemetry [baseline] (7.379 ms) : 0, 7379
Telemetry [candidate] (7.473 ms) : 0, 7473
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.09 s) : 0, 1089986
Total [baseline] (10.518 s) : 0, 10518089
Agent [candidate] (1.094 s) : 0, 1094222
Total [candidate] (10.507 s) : 0, 10507340
section appsec
Agent [baseline] (1.225 s) : 0, 1224589
Total [baseline] (10.817 s) : 0, 10817375
Agent [candidate] (1.225 s) : 0, 1224927
Total [candidate] (10.781 s) : 0, 10781114
section iast
Agent [baseline] (1.227 s) : 0, 1227228
Total [baseline] (10.988 s) : 0, 10988261
Agent [candidate] (1.223 s) : 0, 1222633
Total [candidate] (11.004 s) : 0, 11004078
section profiling
Agent [baseline] (1.317 s) : 0, 1317367
Total [baseline] (10.835 s) : 0, 10835001
Agent [candidate] (1.329 s) : 0, 1328794
Total [candidate] (10.886 s) : 0, 10885677
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.09 s -
Agent appsec 1.225 s 134.603 ms (12.3%)
Agent iast 1.227 s 137.242 ms (12.6%)
Agent profiling 1.317 s 227.381 ms (20.9%)
Total tracing 10.518 s -
Total appsec 10.817 s 299.286 ms (2.8%)
Total iast 10.988 s 470.172 ms (4.5%)
Total profiling 10.835 s 316.912 ms (3.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.094 s -
Agent appsec 1.225 s 130.705 ms (11.9%)
Agent iast 1.223 s 128.412 ms (11.7%)
Agent profiling 1.329 s 234.573 ms (21.4%)
Total tracing 10.507 s -
Total appsec 10.781 s 273.773 ms (2.6%)
Total iast 11.004 s 496.738 ms (4.7%)
Total profiling 10.886 s 378.337 ms (3.6%)
gantt
    title petclinic - break down per module: candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (693.315 ms) : 0, 693315
BytebuddyAgent [candidate] (696.256 ms) : 0, 696256
GlobalTracer [baseline] (317.087 ms) : 0, 317087
GlobalTracer [candidate] (316.999 ms) : 0, 316999
AppSec [baseline] (54.617 ms) : 0, 54617
AppSec [candidate] (55.084 ms) : 0, 55084
Remote Config [baseline] (678.379 µs) : 0, 678
Remote Config [candidate] (678.53 µs) : 0, 679
Telemetry [baseline] (10.6 ms) : 0, 10600
Telemetry [candidate] (11.433 ms) : 0, 11433
section appsec
BytebuddyAgent [baseline] (711.5 ms) : 0, 711500
BytebuddyAgent [candidate] (711.801 ms) : 0, 711801
GlobalTracer [baseline] (314.143 ms) : 0, 314143
GlobalTracer [candidate] (314.256 ms) : 0, 314256
AppSec [baseline] (166.923 ms) : 0, 166923
AppSec [candidate] (166.04 ms) : 0, 166040
IAST [baseline] (19.632 ms) : 0, 19632
IAST [candidate] (19.758 ms) : 0, 19758
Remote Config [baseline] (636.834 µs) : 0, 637
Remote Config [candidate] (662.081 µs) : 0, 662
Telemetry [baseline] (7.852 ms) : 0, 7852
Telemetry [candidate] (8.552 ms) : 0, 8552
section iast
BytebuddyAgent [baseline] (817.674 ms) : 0, 817674
BytebuddyAgent [candidate] (814.59 ms) : 0, 814590
GlobalTracer [baseline] (307.755 ms) : 0, 307755
GlobalTracer [candidate] (307.278 ms) : 0, 307278
AppSec [baseline] (57.616 ms) : 0, 57616
AppSec [candidate] (58.158 ms) : 0, 58158
IAST [baseline] (22.156 ms) : 0, 22156
IAST [candidate] (20.741 ms) : 0, 20741
Remote Config [baseline] (636.14 µs) : 0, 636
Remote Config [candidate] (622.882 µs) : 0, 623
Telemetry [baseline] (7.616 ms) : 0, 7616
Telemetry [candidate] (7.486 ms) : 0, 7486
section profiling
BytebuddyAgent [baseline] (688.827 ms) : 0, 688827
BytebuddyAgent [candidate] (694.427 ms) : 0, 694427
GlobalTracer [baseline] (433.252 ms) : 0, 433252
GlobalTracer [candidate] (437.576 ms) : 0, 437576
AppSec [baseline] (53.924 ms) : 0, 53924
AppSec [candidate] (54.344 ms) : 0, 54344
Remote Config [baseline] (658.87 µs) : 0, 659
Remote Config [candidate] (662.206 µs) : 0, 662
Telemetry [baseline] (7.754 ms) : 0, 7754
Telemetry [candidate] (7.727 ms) : 0, 7727
ProfilingAgent [baseline] (93.907 ms) : 0, 93907
ProfilingAgent [candidate] (94.772 ms) : 0, 94772
Profiling [baseline] (93.931 ms) : 0, 93931
Profiling [candidate] (94.796 ms) : 0, 94796
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2024-12-03T17:32:48 2024-12-03T17:39:45
git_branch master andrea.marziali/mulesoft
git_commit_date 1733246077 1733246545
git_commit_sha 7698f2f 9718fe6
release_version 1.44.0-SNAPSHOT~7698f2f594 1.44.0-SNAPSHOT~9718fe6e44
start_time 2024-12-03T17:32:34 2024-12-03T17:39:31
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1733247937 1733247937
ci_job_id 725944238 725944238
ci_pipeline_id 50283847 50283847
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
variant iast iast

Summary

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

Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.367 ms) : 1346, 1387
.   : milestone, 1367,
appsec (1.747 ms) : 1722, 1773
.   : milestone, 1747,
appsec_no_iast (1.768 ms) : 1744, 1792
.   : milestone, 1768,
iast (1.503 ms) : 1480, 1526
.   : milestone, 1503,
profiling (1.499 ms) : 1476, 1522
.   : milestone, 1499,
tracing (1.489 ms) : 1464, 1514
.   : milestone, 1489,
section candidate
no_agent (1.348 ms) : 1328, 1368
.   : milestone, 1348,
appsec (1.747 ms) : 1722, 1772
.   : milestone, 1747,
appsec_no_iast (1.76 ms) : 1736, 1784
.   : milestone, 1760,
iast (1.493 ms) : 1469, 1516
.   : milestone, 1493,
profiling (1.544 ms) : 1520, 1568
.   : milestone, 1544,
tracing (1.478 ms) : 1454, 1503
.   : milestone, 1478,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.367 ms [1.346 ms, 1.387 ms] -
appsec 1.747 ms [1.722 ms, 1.773 ms] 380.537 µs (27.8%)
appsec_no_iast 1.768 ms [1.744 ms, 1.792 ms] 401.697 µs (29.4%)
iast 1.503 ms [1.48 ms, 1.526 ms] 136.342 µs (10.0%)
profiling 1.499 ms [1.476 ms, 1.522 ms] 132.526 µs (9.7%)
tracing 1.489 ms [1.464 ms, 1.514 ms] 122.221 µs (8.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.348 ms [1.328 ms, 1.368 ms] -
appsec 1.747 ms [1.722 ms, 1.772 ms] 398.914 µs (29.6%)
appsec_no_iast 1.76 ms [1.736 ms, 1.784 ms] 411.781 µs (30.5%)
iast 1.493 ms [1.469 ms, 1.516 ms] 144.503 µs (10.7%)
profiling 1.544 ms [1.52 ms, 1.568 ms] 196.286 µs (14.6%)
tracing 1.478 ms [1.454 ms, 1.503 ms] 130.259 µs (9.7%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594
    dateFormat X
    axisFormat %s
section baseline
no_agent (373.059 µs) : 353, 393
.   : milestone, 373,
iast (488.547 µs) : 467, 510
.   : milestone, 489,
iast_FULL (644.351 µs) : 623, 666
.   : milestone, 644,
iast_GLOBAL (524.933 µs) : 502, 548
.   : milestone, 525,
iast_HARDCODED_SECRET_DISABLED (488.311 µs) : 467, 510
.   : milestone, 488,
iast_INACTIVE (446.803 µs) : 426, 468
.   : milestone, 447,
iast_TELEMETRY_OFF (475.152 µs) : 454, 496
.   : milestone, 475,
tracing (450.612 µs) : 430, 471
.   : milestone, 451,
section candidate
no_agent (377.609 µs) : 356, 399
.   : milestone, 378,
iast (488.864 µs) : 467, 510
.   : milestone, 489,
iast_FULL (646.215 µs) : 625, 668
.   : milestone, 646,
iast_GLOBAL (510.443 µs) : 489, 532
.   : milestone, 510,
iast_HARDCODED_SECRET_DISABLED (491.33 µs) : 469, 513
.   : milestone, 491,
iast_INACTIVE (450.762 µs) : 430, 472
.   : milestone, 451,
iast_TELEMETRY_OFF (475.597 µs) : 454, 497
.   : milestone, 476,
tracing (447.135 µs) : 426, 468
.   : milestone, 447,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 373.059 µs [353.353 µs, 392.766 µs] -
iast 488.547 µs [466.927 µs, 510.167 µs] 115.487 µs (31.0%)
iast_FULL 644.351 µs [622.812 µs, 665.89 µs] 271.292 µs (72.7%)
iast_GLOBAL 524.933 µs [502.364 µs, 547.503 µs] 151.874 µs (40.7%)
iast_HARDCODED_SECRET_DISABLED 488.311 µs [466.862 µs, 509.759 µs] 115.251 µs (30.9%)
iast_INACTIVE 446.803 µs [425.875 µs, 467.731 µs] 73.744 µs (19.8%)
iast_TELEMETRY_OFF 475.152 µs [453.951 µs, 496.354 µs] 102.093 µs (27.4%)
tracing 450.612 µs [430.061 µs, 471.162 µs] 77.552 µs (20.8%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 377.609 µs [355.793 µs, 399.424 µs] -
iast 488.864 µs [467.346 µs, 510.381 µs] 111.255 µs (29.5%)
iast_FULL 646.215 µs [624.737 µs, 667.693 µs] 268.606 µs (71.1%)
iast_GLOBAL 510.443 µs [489.186 µs, 531.7 µs] 132.834 µs (35.2%)
iast_HARDCODED_SECRET_DISABLED 491.33 µs [469.199 µs, 513.462 µs] 113.722 µs (30.1%)
iast_INACTIVE 450.762 µs [429.929 µs, 471.594 µs] 73.153 µs (19.4%)
iast_TELEMETRY_OFF 475.597 µs [454.387 µs, 496.807 µs] 97.988 µs (25.9%)
tracing 447.135 µs [426.434 µs, 467.836 µs] 69.526 µs (18.4%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/mulesoft
git_commit_date 1733246077 1733246545
git_commit_sha 7698f2f 9718fe6
release_version 1.44.0-SNAPSHOT~7698f2f594 1.44.0-SNAPSHOT~9718fe6e44
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1733248474 1733248474
ci_job_id 725944240 725944240
ci_pipeline_id 50283847 50283847
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
variant appsec appsec

Summary

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

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.466 ms) : 1455, 1478
.   : milestone, 1466,
appsec (2.355 ms) : 2314, 2396
.   : milestone, 2355,
iast (2.09 ms) : 2038, 2142
.   : milestone, 2090,
iast_GLOBAL (2.135 ms) : 2083, 2188
.   : milestone, 2135,
profiling (1.955 ms) : 1913, 1997
.   : milestone, 1955,
tracing (1.932 ms) : 1892, 1972
.   : milestone, 1932,
section candidate
no_agent (1.474 ms) : 1463, 1486
.   : milestone, 1474,
appsec (2.356 ms) : 2314, 2397
.   : milestone, 2356,
iast (2.096 ms) : 2044, 2149
.   : milestone, 2096,
iast_GLOBAL (2.141 ms) : 2088, 2194
.   : milestone, 2141,
profiling (1.969 ms) : 1927, 2012
.   : milestone, 1969,
tracing (1.945 ms) : 1904, 1985
.   : milestone, 1945,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.466 ms [1.455 ms, 1.478 ms] -
appsec 2.355 ms [2.314 ms, 2.396 ms] 888.675 µs (60.6%)
iast 2.09 ms [2.038 ms, 2.142 ms] 623.783 µs (42.5%)
iast_GLOBAL 2.135 ms [2.083 ms, 2.188 ms] 668.905 µs (45.6%)
profiling 1.955 ms [1.913 ms, 1.997 ms] 488.279 µs (33.3%)
tracing 1.932 ms [1.892 ms, 1.972 ms] 465.415 µs (31.7%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.474 ms [1.463 ms, 1.486 ms] -
appsec 2.356 ms [2.314 ms, 2.397 ms] 881.79 µs (59.8%)
iast 2.096 ms [2.044 ms, 2.149 ms] 622.001 µs (42.2%)
iast_GLOBAL 2.141 ms [2.088 ms, 2.194 ms] 666.415 µs (45.2%)
profiling 1.969 ms [1.927 ms, 2.012 ms] 495.276 µs (33.6%)
tracing 1.945 ms [1.904 ms, 1.985 ms] 470.355 µs (31.9%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.44.0-SNAPSHOT~9718fe6e44, baseline=1.44.0-SNAPSHOT~7698f2f594
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.452 s) : 15452000, 15452000
.   : milestone, 15452000,
appsec (15.217 s) : 15217000, 15217000
.   : milestone, 15217000,
iast (18.776 s) : 18776000, 18776000
.   : milestone, 18776000,
iast_GLOBAL (17.724 s) : 17724000, 17724000
.   : milestone, 17724000,
profiling (15.339 s) : 15339000, 15339000
.   : milestone, 15339000,
tracing (15.092 s) : 15092000, 15092000
.   : milestone, 15092000,
section candidate
no_agent (15.225 s) : 15225000, 15225000
.   : milestone, 15225000,
appsec (15.164 s) : 15164000, 15164000
.   : milestone, 15164000,
iast (18.912 s) : 18912000, 18912000
.   : milestone, 18912000,
iast_GLOBAL (17.713 s) : 17713000, 17713000
.   : milestone, 17713000,
profiling (15.632 s) : 15632000, 15632000
.   : milestone, 15632000,
tracing (14.804 s) : 14804000, 14804000
.   : milestone, 14804000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.452 s [15.452 s, 15.452 s] -
appsec 15.217 s [15.217 s, 15.217 s] -235.0 ms (-1.5%)
iast 18.776 s [18.776 s, 18.776 s] 3.324 s (21.5%)
iast_GLOBAL 17.724 s [17.724 s, 17.724 s] 2.272 s (14.7%)
profiling 15.339 s [15.339 s, 15.339 s] -113.0 ms (-0.7%)
tracing 15.092 s [15.092 s, 15.092 s] -360.0 ms (-2.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.225 s [15.225 s, 15.225 s] -
appsec 15.164 s [15.164 s, 15.164 s] -61.0 ms (-0.4%)
iast 18.912 s [18.912 s, 18.912 s] 3.687 s (24.2%)
iast_GLOBAL 17.713 s [17.713 s, 17.713 s] 2.488 s (16.3%)
profiling 15.632 s [15.632 s, 15.632 s] 407.0 ms (2.7%)
tracing 14.804 s [14.804 s, 14.804 s] -421.0 ms (-2.8%)

@amarziali amarziali force-pushed the andrea.marziali/mulesoft branch 7 times, most recently from 45ee35b to 1d21fec Compare November 27, 2024 13:53
latestDepForkedTestImplementation group: 'org.mule.runtime', name: 'mule-module-javaee', version: '4.8.+'


//TODO: 4.9.0 is not yet out but it looks like using 4.+ instead of above 4.8.+ brings in 4.9.0-SNAPSHOT artifacts.
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I will see if we can have a BOM for each version of mule in order to manage better the version of each submodule for the latestDep and address it in another PR

@amarziali amarziali force-pushed the andrea.marziali/mulesoft branch from c5ee702 to 42b79cd Compare November 28, 2024 13:24
@amarziali amarziali added type: enhancement inst: others All other instrumentations labels Nov 28, 2024
@amarziali amarziali marked this pull request as ready for review November 28, 2024 13:28
@amarziali amarziali requested review from a team as code owners November 28, 2024 13:28
@@ -97,7 +97,11 @@ abstract class HttpServerTest<SERVER> extends WithHttpServer<SERVER> {
return key + ":" + value
}
static {
((ch.qos.logback.classic.Logger) SERVER_LOGGER).setLevel(Level.DEBUG)
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

There are tests in which we cannot bind logback because of the version we use along the version of slf4j we have it's perhaps no more compatible with the thing we are testing. Assuming a logger implementation is not really correct here. That loglevel forcing can be done also by the logging configuration. For now I protected that cast since it does not change the test behaviour if it fails

Copy link
Contributor

Choose a reason for hiding this comment

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

Looks like this explanation deserves to be in the code.

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Looks good but I can’t really review Mulesoft integration itself.
My main question is about creating a dedicated instrumentation module dedicated to Mulesoft. Not sure how to put it in place with separate instrumentations though 🤔

@@ -29,7 +31,7 @@ public AsyncHttpClientInstrumentation() {

@Override
protected boolean defaultEnabled() {
return false;
return InstrumenterConfig.get().isIntegrationEnabled(Collections.singleton("mule"), false);
Copy link
Contributor

Choose a reason for hiding this comment

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

What about creating a dedicated instrumentation module that would bundle all instrumentations needed to Mulesoft?
So you would not have to add dependencies between different instrumentation.

WDYT? cc @mcculls

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@PerfectSlayer to add more details, the instrumentations are independent but grizzly are deactivated by default. I just need to sycnhronize the activation of them. FYI grizzly can be activated outside a mulesoft usage

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, that was what I get. I wonder if we can create an Mulesoft instrumentation module that would bundle both grizzy instrumentations and Mulesoft instrumentations so you would only have one activation check 🤷

dd-java-agent/instrumentation/mule-4/build.gradle Outdated Show resolved Hide resolved
@amarziali amarziali force-pushed the andrea.marziali/mulesoft branch from 42b79cd to 73e5753 Compare November 29, 2024 15:38
@@ -6,8 +6,8 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<app.runtime>4.2.2-20210129</app.runtime>
<mule.maven.plugin.version>3.4.2</mule.maven.plugin.version>
<app.runtime>4.5.0</app.runtime>
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we drop <4.5 support then? Which would make sense if the instrumentation was incomplete.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes and it's not really a breaking change since the previous instrumentation was not creating any spans but only providing a better support for propagating the context across the mule internal routing

static DDSpan muleSpan(TraceAssert traceAssert, String componentType, String componentName, DDSpan parent = null, boolean error = false) {
def ret
traceAssert.span {
ret = it.span
Copy link
Contributor

Choose a reason for hiding this comment

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

Nice!

assertTraces(1) {
trace(1 + names.size()) { traceAssert ->
traceAssert.span(0) {
trace(4 + 3 * names.size(), new TreeComparator(trace(0))) { traceAssert ->
Copy link
Contributor

Choose a reason for hiding this comment

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

Why is a special order necessary? I suppose it's because the spans are emitted in an unpredictable order?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The flow is: Http request -> [ For each element -> do processing ] -> Reply. The foreach is parallel and each iteration create spans. So yes the order in which the foreach spans are emitted is not predictable. However there is a tree-like structure I recreate in order to have span ordered in a predictable order so that I can assert

@@ -125,7 +127,7 @@ class MuleForkedTest extends WithHttpServer<MuleTestContainer> {
"$Tags.HTTP_STATUS" 200
"$Tags.HTTP_URL" "${requestServer.address.resolve("/remote-client-request")}"
"$Tags.PEER_HOSTNAME" "localhost"
"$Tags.PEER_PORT" { true } // is this really the best way to ignore tags?
"$Tags.PEER_PORT" { Integer }
Copy link
Contributor

Choose a reason for hiding this comment

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

Huh? Does that work as a type assertion?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

final AgentSpan span = spanState.getSpanContextSpan();
DECORATE.beforeFinish(span).finish();
}
eventContextStore.put(eventContext, spanState.getPreviousState());
Copy link
Contributor

Choose a reason for hiding this comment

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

Is CoreEvent that we bind our context to shared for different Mule Spans? I'm just trying to figure out the need to track chains of SpanStates.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

the state is bound to the EventContext. There is one eventContext per processing meaning that, in case of multithreaded parallel processing (there is a test case for) there are N different event context

Copy link
Contributor

Choose a reason for hiding this comment

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

Thank you. That's clear. One thing that is still not clear to me is why you need to keep a chain of previous states and unroll it with getPreviousState to update the context store of the same event object?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Because in a single event context we might open different spans. The mule tracer api does not pass the current span when starting and stopping (but there are thing like closeCurrent(EventContext) so when closing the current one we should 'activate` the previous one in order to keep track of the active one

Copy link
Contributor

@ygree ygree left a comment

Choose a reason for hiding this comment

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

Great work! That's a lot of effort! I've added some notes about the implementation, mostly to clarify my understanding, but I see no reason not to merge it as long as it works.

@amarziali amarziali merged commit d2c8a74 into master Dec 4, 2024
103 checks passed
@amarziali amarziali deleted the andrea.marziali/mulesoft branch December 4, 2024 08:23
@github-actions github-actions bot added this to the 1.44.0 milestone Dec 4, 2024
svc-squareup-copybara pushed a commit to cashapp/misk that referenced this pull request Dec 16, 2024
| Package | Type | Package file | Manager | Update | Change |
|---|---|---|---|---|---|
|
[com.google.api.grpc:proto-google-common-protos](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.49.0` -> `2.50.0` |
|
[com.google.cloud:google-cloud-core-http](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.48.0` -> `2.49.0` |
|
[com.google.cloud:google-cloud-spanner](https://github.com/googleapis/java-spanner)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`6.82.0` -> `6.83.0` |
|
[com.google.cloud:google-cloud-logging](https://github.com/googleapis/java-logging)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`3.20.7` -> `3.21.0` |
|
[com.google.cloud:google-cloud-datastore](https://github.com/googleapis/java-datastore)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.24.3` -> `2.25.1` |
|
[com.google.cloud:google-cloud-core](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.48.0` -> `2.49.0` |
| [com.google.api:gax](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.58.0` -> `2.59.0` |
|
[com.autonomousapps.dependency-analysis](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin)
| plugin | misk/gradle/libs.versions.toml | gradle | patch | `2.6.0` ->
`2.6.1` |
| [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.43.0` -> `1.44.1` |
| [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.43.0` -> `1.44.1` |
| [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.29.32` -> `2.29.34` |
|
[software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava)
| dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.29.32` -> `2.29.34` |
| [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.29.32` -> `2.29.34` |
| [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.29.32` -> `2.29.34` |
| [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.29.32` -> `2.29.34` |
| [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.29.32` -> `2.29.34` |
| [com.amazonaws:aws-java-sdk-sqs](https://aws.amazon.com/sdkforjava)
([source](https://github.com/aws/aws-sdk-java)) | dependencies |
misk/gradle/libs.versions.toml | gradle | patch | `1.12.779` ->
`1.12.780` |
| [com.amazonaws:aws-java-sdk-s3](https://aws.amazon.com/sdkforjava)
([source](https://github.com/aws/aws-sdk-java)) | dependencies |
misk/gradle/libs.versions.toml | gradle | patch | `1.12.779` ->
`1.12.780` |
|
[com.amazonaws:aws-java-sdk-dynamodb](https://aws.amazon.com/sdkforjava)
([source](https://github.com/aws/aws-sdk-java)) | dependencies |
misk/gradle/libs.versions.toml | gradle | patch | `1.12.779` ->
`1.12.780` |
| [com.amazonaws:aws-java-sdk-core](https://aws.amazon.com/sdkforjava)
([source](https://github.com/aws/aws-sdk-java)) | dependencies |
misk/gradle/libs.versions.toml | gradle | patch | `1.12.779` ->
`1.12.780` |

---

### Release Notes

<details>
<summary>googleapis/sdk-platform-java
(com.google.api.grpc:proto-google-common-protos)</summary>

###
[`v2.50.0`](https://github.com/googleapis/sdk-platform-java/blob/HEAD/CHANGELOG.md#2500-2024-11-14)

##### Features

- Add experimental S2A integration in client libraries grpc transport
([#&#8203;3326](googleapis/sdk-platform-java#3326))
([1138ca6](googleapis/sdk-platform-java@1138ca6))
- enable selective generation based on service config include list
([#&#8203;3323](googleapis/sdk-platform-java#3323))
([0cddadb](googleapis/sdk-platform-java@0cddadb))
- introduce `java.time` to java-core
([#&#8203;3330](googleapis/sdk-platform-java#3330))
([f202c3b](googleapis/sdk-platform-java@f202c3b))
- Update Gapic-Generator to generate libraries using `java.time` methods
([#&#8203;3321](googleapis/sdk-platform-java#3321))
([b21c9a4](googleapis/sdk-platform-java@b21c9a4))

##### Bug Fixes

- Fix flaky test
ScheduledRetryingExecutorTest.testCancelOuterFutureAfterStart
([#&#8203;3335](googleapis/sdk-platform-java#3335))
([e73740d](googleapis/sdk-platform-java@e73740d))
- httpjson callables to trace attempts (started, failed)
([#&#8203;3300](googleapis/sdk-platform-java#3300))
([15a64ee](googleapis/sdk-platform-java@15a64ee))
- instantiate GaxProperties at build time to ensure we get the protobuf
version
([#&#8203;3365](googleapis/sdk-platform-java#3365))
([bb2a3be](googleapis/sdk-platform-java@bb2a3be))
- protobuf version not always getting set in headers
([#&#8203;3322](googleapis/sdk-platform-java#3322))
([7f6e470](googleapis/sdk-platform-java@7f6e470))
- use BuildKit instead of legacy builder to build the Hermetic Build
images
([#&#8203;3338](googleapis/sdk-platform-java#3338))
([222fb45](googleapis/sdk-platform-java@222fb45))

##### Dependencies

- update google auth library dependencies to v1.30.0
([#&#8203;3367](googleapis/sdk-platform-java#3367))
([a31c682](googleapis/sdk-platform-java@a31c682))
- update grpc dependencies to v1.68.1
([#&#8203;3240](googleapis/sdk-platform-java#3240))
([c8e3941](googleapis/sdk-platform-java@c8e3941))

##### Documentation

- fix list num
([#&#8203;3356](googleapis/sdk-platform-java#3356))
([b7d6296](googleapis/sdk-platform-java@b7d6296))
- **hermetic-build:** indicate usage of Docker Buildkit in development
guide
([#&#8203;3337](googleapis/sdk-platform-java#3337))
([01e742d](googleapis/sdk-platform-java@01e742d))
- modify hermetic build docs
([#&#8203;3331](googleapis/sdk-platform-java#3331))
([25023af](googleapis/sdk-platform-java@25023af))

</details>

<details>
<summary>googleapis/java-spanner
(com.google.cloud:google-cloud-spanner)</summary>

###
[`v6.83.0`](https://github.com/googleapis/java-spanner/blob/HEAD/CHANGELOG.md#6830-2024-12-13)

##### Features

- Add Metrics host for built in metrics
([#&#8203;3519](googleapis/java-spanner#3519))
([4ed455a](googleapis/java-spanner@4ed455a))
- Add opt-in for using multiplexed sessions for blind writes
([#&#8203;3540](googleapis/java-spanner#3540))
([216f53e](googleapis/java-spanner@216f53e))
- Add UUID in Spanner TypeCode enum
([41f83dc](googleapis/java-spanner@41f83dc))
- Introduce java.time variables and methods
([#&#8203;3495](googleapis/java-spanner#3495))
([8a7d533](googleapis/java-spanner@8a7d533))
- **spanner:** Support multiplexed session for Partitioned operations
([#&#8203;3231](googleapis/java-spanner#3231))
([4501a3e](googleapis/java-spanner@4501a3e))
- Support 'set local' for retry_aborts_internally
([#&#8203;3532](googleapis/java-spanner#3532))
([331942f](googleapis/java-spanner@331942f))

##### Bug Fixes

- **deps:** Update the Java code generator (gapic-generator-java) to
2.51.0
([41f83dc](googleapis/java-spanner@41f83dc))

##### Dependencies

- Update sdk platform java dependencies
([#&#8203;3549](googleapis/java-spanner#3549))
([6235f0f](googleapis/java-spanner@6235f0f))

</details>

<details>
<summary>googleapis/java-logging
(com.google.cloud:google-cloud-logging)</summary>

###
[`v3.21.0`](https://github.com/googleapis/java-logging/blob/HEAD/CHANGELOG.md#3210-2024-12-13)

##### Features

- Introduce `java.time` methods
([#&#8203;1729](googleapis/java-logging#1729))
([323eb33](googleapis/java-logging@323eb33))

##### Bug Fixes

- **deps:** Update the Java code generator (gapic-generator-java) to
2.51.0
([04d8868](googleapis/java-logging@04d8868))

##### Dependencies

- Update dependency io.opentelemetry:opentelemetry-bom to v1.45.0
([#&#8203;1638](googleapis/java-logging#1638))
([7e007d4](googleapis/java-logging@7e007d4))
- Update sdk platform java dependencies
([#&#8203;1736](googleapis/java-logging#1736))
([88b4cdf](googleapis/java-logging@88b4cdf))

</details>

<details>
<summary>googleapis/java-datastore
(com.google.cloud:google-cloud-datastore)</summary>

###
[`v2.25.1`](https://github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2251-2024-12-13)

##### Bug Fixes

- **deps:** Update the Java code generator (gapic-generator-java) to
2.51.0
([106ee4d](googleapis/java-datastore@106ee4d))

##### Dependencies

- Update sdk platform java dependencies
([#&#8203;1685](googleapis/java-datastore#1685))
([4372350](googleapis/java-datastore@4372350))

###
[`v2.25.0`](https://github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2250-2024-12-11)

##### Features

- Introduce `java.time` methods and variables
([#&#8203;1671](googleapis/java-datastore#1671))
([5a78a80](googleapis/java-datastore@5a78a80))

##### Dependencies

- Update dependency com.google.cloud:gapic-libraries-bom to v1.48.0
([#&#8203;1605](googleapis/java-datastore#1605))
([5c6a678](googleapis/java-datastore@5c6a678))

##### Documentation

- Update gapic upgrade installation instructions
([#&#8203;1677](googleapis/java-datastore#1677))
([b3fbfcc](googleapis/java-datastore@b3fbfcc))

</details>

<details>
<summary>autonomousapps/dependency-analysis-android-gradle-plugin
(com.autonomousapps.dependency-analysis)</summary>

###
[`v2.6.1`](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/blob/HEAD/CHANGELOG.md#Version-261)

-   \[Fix]: `superClassName` can be null (Object has no superclass).

</details>

<details>
<summary>datadog/dd-trace-java (com.datadoghq:dd-trace-api)</summary>

###
[`v1.44.1`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.44.1):
1.44.1

##### Components

##### Continuous Integration Visibility

- 🐛 Fix tracing JUnit5 tests in Maven projects with multiple forks
([#&#8203;8089](DataDog/dd-trace-java#8089) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))

###
[`v1.44.0`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.44.0):
1.44.0

##### Known Issues

> \[!WARNING]\
> This release contains a known issue that causes failures when using
Test Optimization to trace JUnit 5 tests in a Maven project where Maven
Surefire is configured with `forkCount` > 1.
> The issue is fixed in v1.44.1

##### Breaking Changes

> \[!WARNING]\
> Support for `X-Forwarded` header is dropped from default client IP
resolution.
> It can still be re-activated using the
`dd.trace.client-ip-header=x-forwarded` system property, or the
`DD_TRACE_CLIENT_IP_HEADER=x-forwarded` environment variable. See
[#&#8203;7946](DataDog/dd-trace-java#7946).

##### Components

##### Application Security Management (IAST)

- ✨ Set unexpected IAST exceptions to debug log level
([#&#8203;8044](DataDog/dd-trace-java#8044) -
[@&#8203;smola](https://github.com/smola))
- ✨ Increase IAST propagation to StringBuffer subSequence
([#&#8203;8038](DataDog/dd-trace-java#8038) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Increase IAST propagation to StringBuilder subSequence
([#&#8203;8026](DataDog/dd-trace-java#8026) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Add IAST propagation to String valueOf
([#&#8203;8013](DataDog/dd-trace-java#8013) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Increase IAST propagation to StringBuilder append
([#&#8203;8010](DataDog/dd-trace-java#8010) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Expand SSRF support in IAST to apache-httpclient-5 and
apache-httpasyncclient-4
([#&#8203;7920](DataDog/dd-trace-java#7920) -
[@&#8203;Mariovido](https://github.com/Mariovido))

##### Build & Tooling

- ✨ Generate Muzzle classes for Groovy instrumentations
([#&#8203;8004](DataDog/dd-trace-java#8004) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))

##### Continuous Integration Visibility

- ✨ Support distributed traces in tests
([#&#8203;8078](DataDog/dd-trace-java#8078) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Implement fail-fast tests ordering for JUnit 5
([#&#8203;8055](DataDog/dd-trace-java#8055) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Mark JUnit 5 setup and teardown action spans as failed if
there is an error
([#&#8203;8033](DataDog/dd-trace-java#8033) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Add tracing of setup and teardown actions in JUnit 4
([#&#8203;8030](DataDog/dd-trace-java#8030) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))

##### Crash tracking

- ✨ Improve crash tracking install logging
([#&#8203;8045](DataDog/dd-trace-java#8045) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))

##### Data Streams Monitoring

- 🐛 Add Data Streams support in AWS SQS without raw message delivery
([#&#8203;8071](DataDog/dd-trace-java#8071) -
[@&#8203;piochelepiotr](https://github.com/piochelepiotr))
- ✨ Add new tag for enabled products / features to DSM
checkpoints
([#&#8203;8051](DataDog/dd-trace-java#8051) -
[@&#8203;kr-igor](https://github.com/kr-igor))
- 💡 Instrument self hosted Kafka connectors
([#&#8203;7959](DataDog/dd-trace-java#7959) -
[@&#8203;piochelepiotr](https://github.com/piochelepiotr))

##### Dynamic Instrumentation

- ✨ Add Micronaut 4 support for code origin for spans
([#&#8203;8039](DataDog/dd-trace-java#8039) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Refactor probe matching for methods
([#&#8203;8021](DataDog/dd-trace-java#8021) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Update the CodeOriginProbe fingerprint to not rely on a
stack walk
([#&#8203;8016](DataDog/dd-trace-java#8016) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- ✨ Implement code origin support for grpc server entry spans
([#&#8203;7942](DataDog/dd-trace-java#7942) -
[@&#8203;evanchooly](https://github.com/evanchooly))

##### GraalVM native-image

- 🐛 Update Graal build-time instrumentation config for
TracePropagationStyle
([#&#8203;8065](DataDog/dd-trace-java#8065) -
[@&#8203;MattAlp](https://github.com/MattAlp))
- 🐛 Fix NoClassDefFoundError: Could not initialize class
DDSpanLink$EncoderHolder in Graal native-image
([#&#8203;8036](DataDog/dd-trace-java#8036) -
[@&#8203;mcculls](https://github.com/mcculls))
- 🐛🧹 Fix native-image generation of reactive applications
([#&#8203;8012](DataDog/dd-trace-java#8012) -
[@&#8203;mcculls](https://github.com/mcculls))

##### OpenTracing

- 🧹 Custom ScopeManagers are deprecated and will be removed in a
future release of dd-trace-ot
([#&#8203;8058](DataDog/dd-trace-java#8058) -
[@&#8203;mcculls](https://github.com/mcculls))

##### Tracer core

- ✨🧪 Service naming: split by jee deployment
([#&#8203;8064](DataDog/dd-trace-java#8064) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Exclude jboss mdb proxies from instrumenting
([#&#8203;8061](DataDog/dd-trace-java#8061) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Add a built-in trace interceptor for keeping traces
depending of their latency
([#&#8203;8040](DataDog/dd-trace-java#8040) -
[@&#8203;cecile75](https://github.com/cecile75))
- 💡 Introduce marker mechanism for eagerly initializing helpers
([#&#8203;8028](DataDog/dd-trace-java#8028) -
[@&#8203;mcculls](https://github.com/mcculls))
- 💡 Add JSON component
([#&#8203;7973](DataDog/dd-trace-java#7973) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- ✨⚠️ Remove support for X-Forwarded in client IP
resolution
([#&#8203;7946](DataDog/dd-trace-java#7946) -
[@&#8203;smola](https://github.com/smola))

##### Instrumentations

##### Apache HttpComponents

- ✨ Expand SSRF support in IAST to apache-httpclient-5 and
apache-httpasyncclient-4
([#&#8203;7920](DataDog/dd-trace-java#7920) -
[@&#8203;Mariovido](https://github.com/Mariovido))

##### gRPC instrumentation

- 🐛 Use lower priorities for grpc server errors
([#&#8203;8043](DataDog/dd-trace-java#8043) -
[@&#8203;amarziali](https://github.com/amarziali))

##### JDBC instrumentation

- ✨ Add trace injection for prepared statements in Postgres
([#&#8203;7940](DataDog/dd-trace-java#7940) -
[@&#8203;nenadnoveljic](https://github.com/nenadnoveljic))

##### JMS instrumentation

- 🐛 Protect mdb from instrumenting multiple time the same event
([#&#8203;8062](DataDog/dd-trace-java#8062) -
[@&#8203;amarziali](https://github.com/amarziali))

##### Kafka instrumentation

- 💡 Instrument self hosted Kafka connectors
([#&#8203;7959](DataDog/dd-trace-java#7959) -
[@&#8203;piochelepiotr](https://github.com/piochelepiotr))

##### OpenTelemetry instrumentation

- 🐛 Support using OpenTelemetry Event API inside `@WithSpan`
annotated method
([#&#8203;8019](DataDog/dd-trace-java#8019) -
[@&#8203;mcculls](https://github.com/mcculls))

##### Reactor instrumentation

- 🐛🧹 Fix native-image generation of reactive applications
([#&#8203;8012](DataDog/dd-trace-java#8012) -
[@&#8203;mcculls](https://github.com/mcculls))

##### Spring instrumentation

- 🐛 Avoid double instrumenting lambdas on latest spring scheduling
([#&#8203;8005](DataDog/dd-trace-java#8005) -
[@&#8203;amarziali](https://github.com/amarziali))

##### All other instrumentations

- 🐛 Twilio: allow service name flattening
([#&#8203;8025](DataDog/dd-trace-java#8025) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Instrument Mulesoft 4.5.0+
([#&#8203;7981](DataDog/dd-trace-java#7981) -
[@&#8203;amarziali](https://github.com/amarziali))

</details>

<details>
<summary>aws/aws-sdk-java (com.amazonaws:aws-java-sdk-sqs)</summary>

###
[`v1.12.780`](https://github.com/aws/aws-sdk-java/blob/HEAD/CHANGELOG.md#112780-2024-12-11)

[Compare
Source](aws/aws-sdk-java@1.12.779...1.12.780)

#### **Amazon Simple Storage Service**

-   ### Bugfixes
- AWS SDK for Java 1.x now includes additional validation for Amazon S3
client APIs to handle scenarios where an empty string ('') is passed as
the key argument to the following operations: PutObject, DeleteObject,
ListObjects, GetObjectMetaData, ListObjectsV2, SetObjectTagging,
GetObjectTagging, SetObjectAcl, GetObjectAcl, SetObjectLegalHold,
GetObjectLegalHold, CopyObject, CopyPart, SelectObjectContent,
SetObjectRetention, GetObjectRetention, AbortMultipartUpload,
CompleteMultipartUpload, InitiateMultipartUpload, ListParts, UploadPart,
RestoreObjectV2, and RestoreObject. The SDK will validate the key
argument and throw an exception if it is an empty string, ensuring
correct and expected behavior.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 6pm every weekday,before 2am
every weekday" in timezone Australia/Melbourne, Automerge - At any time
(no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://github.com/renovatebot/renovate).

GitOrigin-RevId: 69831bc62ea4d80cdcd42cef2aa9bd8eda28ae8c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
inst: others All other instrumentations type: enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants