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

Use Java home of the crashed process to launch crash uploader #8348

Merged
merged 3 commits into from
Feb 10, 2025

Conversation

jbachorik
Copy link
Contributor

@jbachorik jbachorik commented Feb 6, 2025

What Does This Do

It allows capturing the effective Java home of the current Java process for the crash uploader to use.

Motivation

It became known that it is not completely out of question to run a Java process on a partially configured system - eg. java is not on path, but rather the launcher would execute it directly from a location on disk.

This, however, breaks the assumption that we can just 'java ... ' the crash uploader class.

Additional Notes

Contributor Checklist

Jira ticket: PROF-11102

@pr-commenter
Copy link

pr-commenter bot commented Feb 6, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jb/crashtracker_javahome
git_commit_date 1738946056 1738949159
git_commit_sha 3f4b7a8 5531c7d
release_version 1.47.0-SNAPSHOT~3f4b7a8a2b 1.47.0-SNAPSHOT~5531c7d4af
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1738951491 1738951491
ci_job_id 799460029 799460029
ci_pipeline_id 55276803 55276803
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-shpxzk8g-project-304-concurrent-0-xhz9z8c6 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Linux runner-shpxzk8g-project-304-concurrent-0-xhz9z8c6 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None
variant iast iast

Summary

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

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.042 s) : 0, 1042328
Total [baseline] (10.479 s) : 0, 10479368
Agent [candidate] (1.045 s) : 0, 1044683
Total [candidate] (10.464 s) : 0, 10464164
section appsec
Agent [baseline] (1.195 s) : 0, 1194531
Total [baseline] (10.778 s) : 0, 10777604
Agent [candidate] (1.189 s) : 0, 1188728
Total [candidate] (10.825 s) : 0, 10824935
section iast
Agent [baseline] (1.173 s) : 0, 1173400
Total [baseline] (10.979 s) : 0, 10979454
Agent [candidate] (1.173 s) : 0, 1173360
Total [candidate] (10.932 s) : 0, 10932259
section profiling
Agent [baseline] (1.268 s) : 0, 1267743
Total [baseline] (10.907 s) : 0, 10907027
Agent [candidate] (1.274 s) : 0, 1274187
Total [candidate] (10.926 s) : 0, 10926442
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.042 s -
Agent appsec 1.195 s 152.203 ms (14.6%)
Agent iast 1.173 s 131.072 ms (12.6%)
Agent profiling 1.268 s 225.415 ms (21.6%)
Total tracing 10.479 s -
Total appsec 10.778 s 298.235 ms (2.8%)
Total iast 10.979 s 500.085 ms (4.8%)
Total profiling 10.907 s 427.658 ms (4.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.045 s -
Agent appsec 1.189 s 144.044 ms (13.8%)
Agent iast 1.173 s 128.677 ms (12.3%)
Agent profiling 1.274 s 229.503 ms (22.0%)
Total tracing 10.464 s -
Total appsec 10.825 s 360.771 ms (3.4%)
Total iast 10.932 s 468.095 ms (4.5%)
Total profiling 10.926 s 462.279 ms (4.4%)
gantt
    title petclinic - break down per module: candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (716.913 ms) : 0, 716913
BytebuddyAgent [candidate] (716.567 ms) : 0, 716567
GlobalTracer [baseline] (243.509 ms) : 0, 243509
GlobalTracer [candidate] (243.385 ms) : 0, 243385
AppSec [baseline] (55.224 ms) : 0, 55224
AppSec [candidate] (55.04 ms) : 0, 55040
Remote Config [baseline] (715.923 µs) : 0, 716
Remote Config [candidate] (716.17 µs) : 0, 716
Telemetry [baseline] (10.751 ms) : 0, 10751
Telemetry [candidate] (13.702 ms) : 0, 13702
section appsec
BytebuddyAgent [baseline] (739.712 ms) : 0, 739712
BytebuddyAgent [candidate] (735.854 ms) : 0, 735854
GlobalTracer [baseline] (242.183 ms) : 0, 242183
GlobalTracer [candidate] (240.924 ms) : 0, 240924
AppSec [baseline] (177.154 ms) : 0, 177154
AppSec [candidate] (176.616 ms) : 0, 176616
Remote Config [baseline] (675.974 µs) : 0, 676
Remote Config [candidate] (685.666 µs) : 0, 686
Telemetry [baseline] (8.349 ms) : 0, 8349
Telemetry [candidate] (8.315 ms) : 0, 8315
IAST [baseline] (22.202 ms) : 0, 22202
IAST [candidate] (22.006 ms) : 0, 22006
section iast
BytebuddyAgent [baseline] (835.156 ms) : 0, 835156
BytebuddyAgent [candidate] (835.378 ms) : 0, 835378
GlobalTracer [baseline] (233.615 ms) : 0, 233615
GlobalTracer [candidate] (233.669 ms) : 0, 233669
AppSec [baseline] (57.099 ms) : 0, 57099
AppSec [candidate] (56.79 ms) : 0, 56790
Remote Config [baseline] (620.002 µs) : 0, 620
Remote Config [candidate] (622.077 µs) : 0, 622
Telemetry [baseline] (8.713 ms) : 0, 8713
Telemetry [candidate] (8.716 ms) : 0, 8716
IAST [baseline] (22.905 ms) : 0, 22905
IAST [candidate] (22.859 ms) : 0, 22859
section profiling
BytebuddyAgent [baseline] (710.102 ms) : 0, 710102
BytebuddyAgent [candidate] (712.976 ms) : 0, 712976
GlobalTracer [baseline] (354.356 ms) : 0, 354356
GlobalTracer [candidate] (356.942 ms) : 0, 356942
AppSec [baseline] (55.119 ms) : 0, 55119
AppSec [candidate] (54.909 ms) : 0, 54909
Remote Config [baseline] (711.556 µs) : 0, 712
Remote Config [candidate] (712.819 µs) : 0, 713
Telemetry [baseline] (8.928 ms) : 0, 8928
Telemetry [candidate] (9.05 ms) : 0, 9050
ProfilingAgent [baseline] (95.93 ms) : 0, 95930
ProfilingAgent [candidate] (96.903 ms) : 0, 96903
Profiling [baseline] (95.954 ms) : 0, 95954
Profiling [candidate] (96.932 ms) : 0, 96932
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.044 s) : 0, 1043838
Total [baseline] (8.659 s) : 0, 8658523
Agent [candidate] (1.051 s) : 0, 1050985
Total [candidate] (8.667 s) : 0, 8667172
section iast
Agent [baseline] (1.174 s) : 0, 1174231
Total [baseline] (9.213 s) : 0, 9213096
Agent [candidate] (1.175 s) : 0, 1175400
Total [candidate] (9.2 s) : 0, 9200499
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.176 s) : 0, 1176146
Total [baseline] (9.232 s) : 0, 9231622
Agent [candidate] (1.176 s) : 0, 1175589
Total [candidate] (9.249 s) : 0, 9249094
section iast_TELEMETRY_OFF
Agent [baseline] (1.17 s) : 0, 1170444
Total [baseline] (9.215 s) : 0, 9215029
Agent [candidate] (1.171 s) : 0, 1171444
Total [candidate] (9.238 s) : 0, 9238154
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent iast 1.174 s 130.393 ms (12.5%)
Agent iast_HARDCODED_SECRET_DISABLED 1.176 s 132.308 ms (12.7%)
Agent iast_TELEMETRY_OFF 1.17 s 126.606 ms (12.1%)
Total tracing 8.659 s -
Total iast 9.213 s 554.573 ms (6.4%)
Total iast_HARDCODED_SECRET_DISABLED 9.232 s 573.099 ms (6.6%)
Total iast_TELEMETRY_OFF 9.215 s 556.506 ms (6.4%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.051 s -
Agent iast 1.175 s 124.415 ms (11.8%)
Agent iast_HARDCODED_SECRET_DISABLED 1.176 s 124.604 ms (11.9%)
Agent iast_TELEMETRY_OFF 1.171 s 120.459 ms (11.5%)
Total tracing 8.667 s -
Total iast 9.2 s 533.327 ms (6.2%)
Total iast_HARDCODED_SECRET_DISABLED 9.249 s 581.922 ms (6.7%)
Total iast_TELEMETRY_OFF 9.238 s 570.982 ms (6.6%)
gantt
    title insecure-bank - break down per module: candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (717.29 ms) : 0, 717290
BytebuddyAgent [candidate] (722.722 ms) : 0, 722722
GlobalTracer [baseline] (243.334 ms) : 0, 243334
GlobalTracer [candidate] (245.055 ms) : 0, 245055
AppSec [baseline] (55.022 ms) : 0, 55022
AppSec [candidate] (55.548 ms) : 0, 55548
Remote Config [baseline] (731.497 µs) : 0, 731
Remote Config [candidate] (733.305 µs) : 0, 733
Telemetry [baseline] (12.22 ms) : 0, 12220
Telemetry [candidate] (11.61 ms) : 0, 11610
section iast
BytebuddyAgent [baseline] (835.469 ms) : 0, 835469
BytebuddyAgent [candidate] (837.139 ms) : 0, 837139
GlobalTracer [baseline] (233.874 ms) : 0, 233874
GlobalTracer [candidate] (234.018 ms) : 0, 234018
IAST [baseline] (22.928 ms) : 0, 22928
IAST [candidate] (22.782 ms) : 0, 22782
AppSec [baseline] (57.294 ms) : 0, 57294
AppSec [candidate] (56.967 ms) : 0, 56967
Remote Config [baseline] (621.163 µs) : 0, 621
Remote Config [candidate] (608.073 µs) : 0, 608
Telemetry [baseline] (8.732 ms) : 0, 8732
Telemetry [candidate] (8.642 ms) : 0, 8642
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (836.903 ms) : 0, 836903
BytebuddyAgent [candidate] (836.274 ms) : 0, 836274
GlobalTracer [baseline] (234.595 ms) : 0, 234595
GlobalTracer [candidate] (234.474 ms) : 0, 234474
IAST [baseline] (22.876 ms) : 0, 22876
IAST [candidate] (22.986 ms) : 0, 22986
AppSec [baseline] (57.086 ms) : 0, 57086
AppSec [candidate] (57.094 ms) : 0, 57094
Remote Config [baseline] (615.919 µs) : 0, 616
Remote Config [candidate] (627.726 µs) : 0, 628
Telemetry [baseline] (8.733 ms) : 0, 8733
Telemetry [candidate] (8.739 ms) : 0, 8739
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (832.343 ms) : 0, 832343
BytebuddyAgent [candidate] (833.745 ms) : 0, 833745
GlobalTracer [baseline] (233.683 ms) : 0, 233683
GlobalTracer [candidate] (234.416 ms) : 0, 234416
IAST [baseline] (23.281 ms) : 0, 23281
IAST [candidate] (27.554 ms) : 0, 27554
AppSec [baseline] (56.66 ms) : 0, 56660
AppSec [candidate] (51.171 ms) : 0, 51171
Remote Config [baseline] (618.044 µs) : 0, 618
Remote Config [candidate] (621.499 µs) : 0, 621
Telemetry [baseline] (8.681 ms) : 0, 8681
Telemetry [candidate] (8.608 ms) : 0, 8608
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2025-02-07T17:34:45 2025-02-07T17:41:49
git_branch master jb/crashtracker_javahome
git_commit_date 1738946056 1738949159
git_commit_sha 3f4b7a8 5531c7d
release_version 1.47.0-SNAPSHOT~3f4b7a8a2b 1.47.0-SNAPSHOT~5531c7d4af
start_time 2025-02-07T17:34:31 2025-02-07T17:41:35
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1738950466 1738950466
ci_job_id 799460031 799460031
ci_pipeline_id 55276803 55276803
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-ahguadnm-project-304-concurrent-0-09kptiw1 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Linux runner-ahguadnm-project-304-concurrent-0-09kptiw1 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
variant iast iast

Summary

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

Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b
    dateFormat X
    axisFormat %s
section baseline
no_agent (377.313 µs) : 358, 397
.   : milestone, 377,
iast (509.044 µs) : 487, 531
.   : milestone, 509,
iast_FULL (737.296 µs) : 715, 759
.   : milestone, 737,
iast_GLOBAL (554.484 µs) : 532, 577
.   : milestone, 554,
iast_HARDCODED_SECRET_DISABLED (506.361 µs) : 484, 529
.   : milestone, 506,
iast_INACTIVE (463.419 µs) : 442, 485
.   : milestone, 463,
iast_TELEMETRY_OFF (498.278 µs) : 475, 522
.   : milestone, 498,
tracing (447.431 µs) : 427, 468
.   : milestone, 447,
section candidate
no_agent (373.001 µs) : 353, 393
.   : milestone, 373,
iast (503.609 µs) : 482, 526
.   : milestone, 504,
iast_FULL (734.669 µs) : 713, 757
.   : milestone, 735,
iast_GLOBAL (557.497 µs) : 534, 581
.   : milestone, 557,
iast_HARDCODED_SECRET_DISABLED (502.651 µs) : 481, 524
.   : milestone, 503,
iast_INACTIVE (449.749 µs) : 429, 471
.   : milestone, 450,
iast_TELEMETRY_OFF (495.046 µs) : 472, 518
.   : milestone, 495,
tracing (453.538 µs) : 432, 475
.   : milestone, 454,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 377.313 µs [357.648 µs, 396.978 µs] -
iast 509.044 µs [486.801 µs, 531.287 µs] 131.731 µs (34.9%)
iast_FULL 737.296 µs [715.248 µs, 759.344 µs] 359.983 µs (95.4%)
iast_GLOBAL 554.484 µs [531.971 µs, 576.997 µs] 177.171 µs (47.0%)
iast_HARDCODED_SECRET_DISABLED 506.361 µs [484.118 µs, 528.605 µs] 129.049 µs (34.2%)
iast_INACTIVE 463.419 µs [441.928 µs, 484.909 µs] 86.106 µs (22.8%)
iast_TELEMETRY_OFF 498.278 µs [474.914 µs, 521.642 µs] 120.965 µs (32.1%)
tracing 447.431 µs [426.882 µs, 467.98 µs] 70.118 µs (18.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 373.001 µs [353.354 µs, 392.648 µs] -
iast 503.609 µs [481.694 µs, 525.523 µs] 130.608 µs (35.0%)
iast_FULL 734.669 µs [712.788 µs, 756.549 µs] 361.668 µs (97.0%)
iast_GLOBAL 557.497 µs [534.135 µs, 580.86 µs] 184.497 µs (49.5%)
iast_HARDCODED_SECRET_DISABLED 502.651 µs [480.897 µs, 524.405 µs] 129.651 µs (34.8%)
iast_INACTIVE 449.749 µs [428.8 µs, 470.697 µs] 76.748 µs (20.6%)
iast_TELEMETRY_OFF 495.046 µs [471.91 µs, 518.182 µs] 122.045 µs (32.7%)
tracing 453.538 µs [432.158 µs, 474.919 µs] 80.537 µs (21.6%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.347 ms) : 1328, 1367
.   : milestone, 1347,
appsec (1.751 ms) : 1728, 1775
.   : milestone, 1751,
appsec_no_iast (1.757 ms) : 1732, 1782
.   : milestone, 1757,
iast (1.51 ms) : 1486, 1535
.   : milestone, 1510,
profiling (1.516 ms) : 1493, 1539
.   : milestone, 1516,
tracing (1.484 ms) : 1459, 1510
.   : milestone, 1484,
section candidate
no_agent (1.349 ms) : 1330, 1368
.   : milestone, 1349,
appsec (1.751 ms) : 1728, 1774
.   : milestone, 1751,
appsec_no_iast (1.75 ms) : 1726, 1775
.   : milestone, 1750,
iast (1.504 ms) : 1479, 1529
.   : milestone, 1504,
profiling (1.52 ms) : 1495, 1545
.   : milestone, 1520,
tracing (1.474 ms) : 1449, 1499
.   : milestone, 1474,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.347 ms [1.328 ms, 1.367 ms] -
appsec 1.751 ms [1.728 ms, 1.775 ms] 403.919 µs (30.0%)
appsec_no_iast 1.757 ms [1.732 ms, 1.782 ms] 409.843 µs (30.4%)
iast 1.51 ms [1.486 ms, 1.535 ms] 163.161 µs (12.1%)
profiling 1.516 ms [1.493 ms, 1.539 ms] 169.028 µs (12.5%)
tracing 1.484 ms [1.459 ms, 1.51 ms] 137.175 µs (10.2%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.349 ms [1.33 ms, 1.368 ms] -
appsec 1.751 ms [1.728 ms, 1.774 ms] 401.82 µs (29.8%)
appsec_no_iast 1.75 ms [1.726 ms, 1.775 ms] 401.333 µs (29.7%)
iast 1.504 ms [1.479 ms, 1.529 ms] 155.048 µs (11.5%)
profiling 1.52 ms [1.495 ms, 1.545 ms] 170.488 µs (12.6%)
tracing 1.474 ms [1.449 ms, 1.499 ms] 125.043 µs (9.3%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master jb/crashtracker_javahome
git_commit_date 1738946056 1738949159
git_commit_sha 3f4b7a8 5531c7d
release_version 1.47.0-SNAPSHOT~3f4b7a8a2b 1.47.0-SNAPSHOT~5531c7d4af
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1738951214 1738951214
ci_job_id 799460033 799460033
ci_pipeline_id 55276803 55276803
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-dchtpgt-project-304-concurrent-0-aaqi3pko 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Linux runner-dchtpgt-project-304-concurrent-0-aaqi3pko 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
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 biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b
    dateFormat X
    axisFormat %s
section baseline
no_agent (14.969 s) : 14969000, 14969000
.   : milestone, 14969000,
appsec (14.757 s) : 14757000, 14757000
.   : milestone, 14757000,
iast (18.739 s) : 18739000, 18739000
.   : milestone, 18739000,
iast_GLOBAL (18.09 s) : 18090000, 18090000
.   : milestone, 18090000,
profiling (15.263 s) : 15263000, 15263000
.   : milestone, 15263000,
tracing (15.218 s) : 15218000, 15218000
.   : milestone, 15218000,
section candidate
no_agent (15.359 s) : 15359000, 15359000
.   : milestone, 15359000,
appsec (14.937 s) : 14937000, 14937000
.   : milestone, 14937000,
iast (18.873 s) : 18873000, 18873000
.   : milestone, 18873000,
iast_GLOBAL (17.579 s) : 17579000, 17579000
.   : milestone, 17579000,
profiling (15.274 s) : 15274000, 15274000
.   : milestone, 15274000,
tracing (14.971 s) : 14971000, 14971000
.   : milestone, 14971000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.969 s [14.969 s, 14.969 s] -
appsec 14.757 s [14.757 s, 14.757 s] -212.0 ms (-1.4%)
iast 18.739 s [18.739 s, 18.739 s] 3.77 s (25.2%)
iast_GLOBAL 18.09 s [18.09 s, 18.09 s] 3.121 s (20.8%)
profiling 15.263 s [15.263 s, 15.263 s] 294.0 ms (2.0%)
tracing 15.218 s [15.218 s, 15.218 s] 249.0 ms (1.7%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.359 s [15.359 s, 15.359 s] -
appsec 14.937 s [14.937 s, 14.937 s] -422.0 ms (-2.7%)
iast 18.873 s [18.873 s, 18.873 s] 3.514 s (22.9%)
iast_GLOBAL 17.579 s [17.579 s, 17.579 s] 2.22 s (14.5%)
profiling 15.274 s [15.274 s, 15.274 s] -85.0 ms (-0.6%)
tracing 14.971 s [14.971 s, 14.971 s] -388.0 ms (-2.5%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.47.0-SNAPSHOT~5531c7d4af, baseline=1.47.0-SNAPSHOT~3f4b7a8a2b
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.465 ms) : 1454, 1477
.   : milestone, 1465,
appsec (2.359 ms) : 2315, 2402
.   : milestone, 2359,
iast (2.102 ms) : 2047, 2157
.   : milestone, 2102,
iast_GLOBAL (2.146 ms) : 2091, 2202
.   : milestone, 2146,
profiling (1.981 ms) : 1937, 2026
.   : milestone, 1981,
tracing (1.936 ms) : 1894, 1978
.   : milestone, 1936,
section candidate
no_agent (1.467 ms) : 1455, 1478
.   : milestone, 1467,
appsec (2.339 ms) : 2296, 2382
.   : milestone, 2339,
iast (2.102 ms) : 2047, 2157
.   : milestone, 2102,
iast_GLOBAL (2.141 ms) : 2085, 2196
.   : milestone, 2141,
profiling (1.967 ms) : 1923, 2011
.   : milestone, 1967,
tracing (1.934 ms) : 1892, 1976
.   : milestone, 1934,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.465 ms [1.454 ms, 1.477 ms] -
appsec 2.359 ms [2.315 ms, 2.402 ms] 893.321 µs (61.0%)
iast 2.102 ms [2.047 ms, 2.157 ms] 636.577 µs (43.4%)
iast_GLOBAL 2.146 ms [2.091 ms, 2.202 ms] 680.871 µs (46.5%)
profiling 1.981 ms [1.937 ms, 2.026 ms] 515.899 µs (35.2%)
tracing 1.936 ms [1.894 ms, 1.978 ms] 470.281 µs (32.1%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.467 ms [1.455 ms, 1.478 ms] -
appsec 2.339 ms [2.296 ms, 2.382 ms] 871.716 µs (59.4%)
iast 2.102 ms [2.047 ms, 2.157 ms] 635.271 µs (43.3%)
iast_GLOBAL 2.141 ms [2.085 ms, 2.196 ms] 673.775 µs (45.9%)
profiling 1.967 ms [1.923 ms, 2.011 ms] 499.948 µs (34.1%)
tracing 1.934 ms [1.892 ms, 1.976 ms] 467.256 µs (31.9%)

@jbachorik jbachorik marked this pull request as ready for review February 6, 2025 14:45
@jbachorik jbachorik requested a review from a team as a code owner February 6, 2025 14:45
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.

Nice idea of improvement!

Quick question: instead of creating a ensureJava function, why not using the legacy template mechanism to inject the java.home property using a !JAVA_HOME! placeholder?

Sorry, I don't have the full context here, but it felt more reliable that using bash function (not sure how well they are supported on legacy OS 🤷 )

I left few comments about possible space escaping too.

@jbachorik
Copy link
Contributor Author

Quick question: instead of creating a ensureJava function, why not using the legacy template mechanism to inject the java.home property using a !JAVA_HOME! placeholder?

D'oh! Good catch .. I was completely blindsided ... Will fix this.

@jbachorik jbachorik merged commit 987006c into master Feb 10, 2025
198 checks passed
@jbachorik jbachorik deleted the jb/crashtracker_javahome branch February 10, 2025 16:34
@github-actions github-actions bot added this to the 1.47.0 milestone Feb 10, 2025
svc-squareup-copybara pushed a commit to cashapp/misk that referenced this pull request Mar 6, 2025
| Package | Type | Package file | Manager | Update | Change |
|---|---|---|---|---|---|
| [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.46.1` -> `1.47.0` |
| [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.46.1` -> `1.47.0` |
| [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |
| [software.amazon.awssdk:sqs](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |
|
[software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava)
| dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |
| [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |
| [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |
| [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |
| [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.33` -> `2.30.34` |

---

### Release Notes

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

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

##### Components

##### Application Security Management (IAST)

- 🐛 Exclude com.stripe.net.HttpURLConnectionClient to solve IAST
SSRF vulnerability false positives
([#&#8203;8483](DataDog/dd-trace-java#8483) -
[@&#8203;jandro996](https://github.com/jandro996))
- 🐛 Add exclusion to solve IAST weak randomness vulnerability false
positives
([#&#8203;8462](DataDog/dd-trace-java#8462) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Fix weak randomness false positive in Kafka client
([#&#8203;8408](DataDog/dd-trace-java#8408) -
[@&#8203;smola](https://github.com/smola))
- ✨ Fix location for SSRF with Kong Unirest
([#&#8203;8407](DataDog/dd-trace-java#8407) -
[@&#8203;smola](https://github.com/smola))
- ✨ Exclude IBM Instana from IAST
([#&#8203;8406](DataDog/dd-trace-java#8406) -
[@&#8203;smola](https://github.com/smola))
- 🐛 Fix org.json iast instrumentation test for latest dependency
([#&#8203;8347](DataDog/dd-trace-java#8347) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Configuration to Disable APM Tracing
([#&#8203;8219](DataDog/dd-trace-java#8219) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Address cookie vulnerability cardinality issues
([#&#8203;8210](DataDog/dd-trace-java#8210) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Email HTML Injection detection in IAST
([#&#8203;8205](DataDog/dd-trace-java#8205) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))

##### Application Security Management (WAF)

- 🐛✨ Ensure usr.exists tag is not overridden when
UsernameNotFoundException is thrown
([#&#8203;8376](DataDog/dd-trace-java#8376) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- 🐛✨ Ensure usr.exists tag is not overridden by auto
instrumentation
([#&#8203;8374](DataDog/dd-trace-java#8374) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Update appsec metrics with event_rules_version tag
([#&#8203;8354](DataDog/dd-trace-java#8354) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))
- ✨ Update metrics: appsec.waf.requests
([#&#8203;8353](DataDog/dd-trace-java#8353) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Improve ASM support in vert.x 5.0
([#&#8203;8285](DataDog/dd-trace-java#8285) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Update metrics: appsec.waf.updates and appsec.waf.init
([#&#8203;8280](DataDog/dd-trace-java#8280) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Configuration to Disable APM Tracing
([#&#8203;8219](DataDog/dd-trace-java#8219) -
[@&#8203;jandro996](https://github.com/jandro996))

##### Build & Tooling

- 🐛 Do not generate Muzzle references for primitive arrays in method
body
([#&#8203;8361](DataDog/dd-trace-java#8361) -
[@&#8203;amarziali](https://github.com/amarziali))
- 📖 Improve dev env setup documentation for Windows
([#&#8203;8180](DataDog/dd-trace-java#8180) -
[@&#8203;lucaspimentel](https://github.com/lucaspimentel))

##### Continuous Integration Visibility

- ✨ Add support for skip-EFD tagging
([#&#8203;8487](DataDog/dd-trace-java#8487) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Fix an NPE in Gradle Android instrumentation
([#&#8203;8484](DataDog/dd-trace-java#8484) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Consider modified tests when applying fail-fast tests
ordering
([#&#8203;8474](DataDog/dd-trace-java#8474) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Implement tests reordering for TestNG
([#&#8203;8467](DataDog/dd-trace-java#8467) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Fix Gradle Launcher instrumentation to not interfere with Gradle
Test Kit
([#&#8203;8465](DataDog/dd-trace-java#8465) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🧹 Use separate TestEventHandlers per framework in CI Vis
instrumentations
([#&#8203;8451](DataDog/dd-trace-java#8451) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Remove warning log when JUnit 4 test method cannot be
retrieved
([#&#8203;8445](DataDog/dd-trace-java#8445) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Fix Scalatest tracing for tests that are reported asynchronously
([#&#8203;8444](DataDog/dd-trace-java#8444) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Implement attempt to fix tests
([#&#8203;8393](DataDog/dd-trace-java#8393) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Implement test disabling
([#&#8203;8377](DataDog/dd-trace-java#8377) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Update CODEOWNERS parser to not log errors on comments with
leading whitespace
([#&#8203;8349](DataDog/dd-trace-java#8349) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Request Test Management tests list
([#&#8203;8345](DataDog/dd-trace-java#8345) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Receive test management settings from CIVis settings
request
([#&#8203;8331](DataDog/dd-trace-java#8331) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Implement quarantined tests tagging
([#&#8203;8326](DataDog/dd-trace-java#8326) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Implement tests quarantining
([#&#8203;8320](DataDog/dd-trace-java#8320) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Add tag to specify if the user is setting DD_SERVICE
([#&#8203;8318](DataDog/dd-trace-java#8318) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))

##### Crash tracking

- ✨ Only fork jps when required
([#&#8203;8419](DataDog/dd-trace-java#8419) -
[@&#8203;mcculls](https://github.com/mcculls))
- 🐛 Use Java home of the crashed process to launch crash uploader
([#&#8203;8348](DataDog/dd-trace-java#8348) -
[@&#8203;jbachorik](https://github.com/jbachorik))

##### Data Streams Monitoring

- 🐛 Fix error happening when sqs message attributes are readonly
([#&#8203;8473](DataDog/dd-trace-java#8473) -
[@&#8203;vandonr](https://github.com/vandonr))
- 🐛 Fix bug on proto schema extraction
([#&#8203;8403](DataDog/dd-trace-java#8403) -
[@&#8203;vandonr](https://github.com/vandonr))
- 🐛 Fix service name overrides in consumers
([#&#8203;8387](DataDog/dd-trace-java#8387) -
[@&#8203;piochelepiotr](https://github.com/piochelepiotr))

##### Database Monitoring

- ✨ Add DBMTracePreparedStatements to tracer configuration log
([#&#8203;8508](DataDog/dd-trace-java#8508) -
[@&#8203;cecile75](https://github.com/cecile75))

##### Dynamic Instrumentation

- ✨ Look in another location for grpc service methods
([#&#8203;8468](DataDog/dd-trace-java#8468) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- 🐛 Fix Exception Replay with Lambda proxy classes
([#&#8203;8452](DataDog/dd-trace-java#8452) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add code origin support for spring-webmvc
([#&#8203;8416](DataDog/dd-trace-java#8416) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- ✨ Add support for scanning jar from loaded class
([#&#8203;8370](DataDog/dd-trace-java#8370) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- 🐛 Disable capture of entry values
([#&#8203;8369](DataDog/dd-trace-java#8369) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- 🐛 Fix CodeOrigin for `@Trace` annotation
([#&#8203;8344](DataDog/dd-trace-java#8344) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- 🐛 Fix equals/hashCode for CodeOrigin probe
([#&#8203;8319](DataDog/dd-trace-java#8319) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add code origin support to kafka message listeners
([#&#8203;8301](DataDog/dd-trace-java#8301) -
[@&#8203;evanchooly](https://github.com/evanchooly))

##### Metrics

- ✨ Create metric: appsec.waf.error
([#&#8203;8381](DataDog/dd-trace-java#8381) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))
- ✨ Create metric: appsec.rasp.error
([#&#8203;8364](DataDog/dd-trace-java#8364) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))

##### Profiling

- ✨ Bump ddprof library to 1.22.0
([#&#8203;8463](DataDog/dd-trace-java#8463) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- IBM J9 8u361 corresponds to OpenJDK 8u362 by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#187
- Fix compatibility with musl libc 1.2.4 by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#189
- Modify version extraction by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#179
- Do not write null values to jvminfo event by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#184
- Productize VMStructs-based stack walker by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#177
- A few minor downport issues by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#180
- Enable ASGCT by default on fairly safe J9 JDK versions by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#181
- 🐛 Exclude OrderedThreadPoolExecutor from queue-time measurements
([#&#8203;8456](DataDog/dd-trace-java#8456) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- ✨ Record JVM info on JVMs without JFR
([#&#8203;8431](DataDog/dd-trace-java#8431) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- 🐛 Actually use CleanupTask in TempLocationManager
([#&#8203;8420](DataDog/dd-trace-java#8420) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Only fork jps when required
([#&#8203;8419](DataDog/dd-trace-java#8419) -
[@&#8203;mcculls](https://github.com/mcculls))
- 🐛 Adjust JFR checks for J9
([#&#8203;8405](DataDog/dd-trace-java#8405) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- 🧹 Disable smap RSS parsing by default
([#&#8203;8342](DataDog/dd-trace-java#8342) -
[@&#8203;MattAlp](https://github.com/MattAlp))

##### Telemetry

- 🐛 Add support for JBoss jar:file format to DependencyResolver
([#&#8203;8428](DataDog/dd-trace-java#8428) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Update metrics: appsec.waf.requests
([#&#8203;8353](DataDog/dd-trace-java#8353) -
[@&#8203;Mariovido](https://github.com/Mariovido))

##### Trace context propagation

- ✨ Introduce tracing propagator
([#&#8203;8313](DataDog/dd-trace-java#8313) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))

##### Tracer core

- 🐛 Fix Stable Config telemetry source names
([#&#8203;8460](DataDog/dd-trace-java#8460) -
[@&#8203;BaptisteFoy](https://github.com/BaptisteFoy))
- ✨ Probe trace endpoints with a valid payload of empty arrays
([#&#8203;8414](DataDog/dd-trace-java#8414) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Add 1 minute fail-safe to JUL/JMX class-loading callback
([#&#8203;8399](DataDog/dd-trace-java#8399) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Migrate DSM injection calls to context-first APIs
([#&#8203;8383](DataDog/dd-trace-java#8383) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- 🧹 Move continuation capture methods from scope to tracer
([#&#8203;8371](DataDog/dd-trace-java#8371) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Migrate context extraction calls to context-first APIs
([#&#8203;8368](DataDog/dd-trace-java#8368) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- 🧹 Migrate context injection calls to context-first APIs
([#&#8203;8358](DataDog/dd-trace-java#8358) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- 💡 Support reading configurations from files
([#&#8203;8338](DataDog/dd-trace-java#8338) -
[@&#8203;mtoffl01](https://github.com/mtoffl01))
- 💡 Implementation of BaggagePropagator and BaggageContext
([#&#8203;8330](DataDog/dd-trace-java#8330) -
[@&#8203;mhlidd](https://github.com/mhlidd))
- 🧹 Combine continuation implementations into one which supports
multiple activations
([#&#8203;8324](DataDog/dd-trace-java#8324) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Introduce tracing propagator
([#&#8203;8313](DataDog/dd-trace-java#8313) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- ✨ Remove old context propagation API
([#&#8203;8271](DataDog/dd-trace-java#8271) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))

##### Instrumentations

##### AWS Lambda instrumentation

- 🐛 Send error message and stack to Lambda extension
([#&#8203;8417](DataDog/dd-trace-java#8417) -
[@&#8203;nhulston](https://github.com/nhulston))

##### AWS SDK instrumentation

- 🐛 Fix error happening when sqs message attributes are readonly
([#&#8203;8473](DataDog/dd-trace-java#8473) -
[@&#8203;vandonr](https://github.com/vandonr))
- 💡 Inject trace context into AWS Step Functions input
([#&#8203;7585](DataDog/dd-trace-java#7585) -
[@&#8203;DylanLovesCoffee](https://github.com/DylanLovesCoffee))

##### Core Java language instrumentation

- ✨ Look in another location for grpc service methods
([#&#8203;8468](DataDog/dd-trace-java#8468) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- ✨ Add code origin support for spring-webmvc
([#&#8203;8416](DataDog/dd-trace-java#8416) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- 💡 Implementation of BaggagePropagator and BaggageContext
([#&#8203;8330](DataDog/dd-trace-java#8330) -
[@&#8203;mhlidd](https://github.com/mhlidd))
- ✨ Add code origin support to kafka message listeners
([#&#8203;8301](DataDog/dd-trace-java#8301) -
[@&#8203;evanchooly](https://github.com/evanchooly))

##### gRPC instrumentation

- ✨ Look in another location for grpc service methods
([#&#8203;8468](DataDog/dd-trace-java#8468) -
[@&#8203;evanchooly](https://github.com/evanchooly))

##### Kafka instrumentation

- ✨ Add messaging.destination.name tag to kafka integrations
([#&#8203;8366](DataDog/dd-trace-java#8366) -
[@&#8203;rarguelloF](https://github.com/rarguelloF))

##### Protocol Buffer instrumentation

- 🐛 Fix bug on proto schema extraction
([#&#8203;8403](DataDog/dd-trace-java#8403) -
[@&#8203;vandonr](https://github.com/vandonr))

</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**: Never, 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: 108a0f86aa59ab4c938cbac0688dd4c19cb301fa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants