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

KafkaConsumer: avoid null key context access #6545

Merged
merged 1 commit into from
Jan 24, 2024

Conversation

amarziali
Copy link
Collaborator

@amarziali amarziali commented Jan 24, 2024

What Does This Do

Protect unsafe context access:

Failed to handle exception in instrumentation for org.apache.kafka.clients.consumer.KafkaConsumer
java.lang.NullPointerException
at datadog.trace.agent.tooling.WeakMaps$Adapter.put(WeakMaps.java:74)

Motivation

Additional Notes

Jira ticket: [PROJ-IDENT]

@amarziali amarziali requested a review from a team as a code owner January 24, 2024 15:25
@amarziali amarziali added the inst: kafka Kafka instrumentation label Jan 24, 2024
@amarziali amarziali enabled auto-merge (squash) January 24, 2024 15:41
@pr-commenter
Copy link

pr-commenter bot commented Jan 24, 2024

Kafka / producer-benchmark

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/kafka-consumer
git_commit_date 1706108160 1706109922
git_commit_sha 3dc58c7 6f11828
See matching parameters
Baseline Candidate
ci_job_date 1706111221 1706111221
ci_job_id 417483241 417483241
ci_pipeline_id 27108687 27108687
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
jdkVersion 11.0.21 11.0.21
jmhVersion 1.36 1.36
jvm /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/lib/jvm/java-11-openjdk-amd64/bin/java
jvmArgs -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/go/src/github.com/DataDog/apm-reliability/dd-trace-java/platform/src/producer-benchmark/build/tmp/jmh -Duser.country=US -Duser.language=en -Duser.variant -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/go/src/github.com/DataDog/apm-reliability/dd-trace-java/platform/src/producer-benchmark/build/tmp/jmh -Duser.country=US -Duser.language=en -Duser.variant
vmName OpenJDK 64-Bit Server VM OpenJDK 64-Bit Server VM
vmVersion 11.0.21+9-post-Ubuntu-0ubuntu122.04 11.0.21+9-post-Ubuntu-0ubuntu122.04

Summary

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

See unchanged results
scenario Δ mean throughput
scenario:not-instrumented/KafkaProduceBenchmark.benchProduce same
scenario:only-tracing-dsm-disabled-benchmarks/KafkaProduceBenchmark.benchProduce same
scenario:only-tracing-dsm-enabled-benchmarks/KafkaProduceBenchmark.benchProduce unsure
[+24.186op/s; +5680.696op/s] or [+0.019%; +4.390%]

@pr-commenter
Copy link

pr-commenter bot commented Jan 24, 2024

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/kafka-consumer
git_commit_date 1706108160 1706109922
git_commit_sha 3dc58c7 6f11828
release_version 1.29.0-SNAPSHOT~3dc58c7020 1.29.0-SNAPSHOT~6f11828329
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1706112694 1706112694
ci_job_id 417483240 417483240
ci_pipeline_id 27108687 27108687
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 45 metrics, 9 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.29.0-SNAPSHOT~6f11828329, baseline=1.29.0-SNAPSHOT~3dc58c7020

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.054 s) : 0, 1053991
Total [baseline] (9.315 s) : 0, 9315242
Agent [candidate] (1.064 s) : 0, 1063695
Total [candidate] (9.339 s) : 0, 9339300
section appsec
Agent [baseline] (1.16 s) : 0, 1160428
Total [baseline] (9.541 s) : 0, 9540579
Agent [candidate] (1.162 s) : 0, 1161618
Total [candidate] (9.509 s) : 0, 9508729
section iast
Agent [baseline] (1.183 s) : 0, 1182870
Total [baseline] (9.672 s) : 0, 9672064
Agent [candidate] (1.179 s) : 0, 1179296
Total [candidate] (9.61 s) : 0, 9609828
section profiling
Agent [baseline] (1.277 s) : 0, 1277024
Total [baseline] (9.627 s) : 0, 9626587
Agent [candidate] (1.278 s) : 0, 1278276
Total [candidate] (9.57 s) : 0, 9570058
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.054 s -
Agent appsec 1.16 s 106.437 ms (10.1%)
Agent iast 1.183 s 128.878 ms (12.2%)
Agent profiling 1.277 s 223.032 ms (21.2%)
Total tracing 9.315 s -
Total appsec 9.541 s 225.337 ms (2.4%)
Total iast 9.672 s 356.822 ms (3.8%)
Total profiling 9.627 s 311.345 ms (3.3%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.064 s -
Agent appsec 1.162 s 97.923 ms (9.2%)
Agent iast 1.179 s 115.601 ms (10.9%)
Agent profiling 1.278 s 214.581 ms (20.2%)
Total tracing 9.339 s -
Total appsec 9.509 s 169.429 ms (1.8%)
Total iast 9.61 s 270.528 ms (2.9%)
Total profiling 9.57 s 230.758 ms (2.5%)
gantt
    title petclinic - break down per module: candidate=1.29.0-SNAPSHOT~6f11828329, baseline=1.29.0-SNAPSHOT~3dc58c7020

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (664.494 ms) : 0, 664494
BytebuddyAgent [candidate] (670.875 ms) : 0, 670875
GlobalTracer [baseline] (295.197 ms) : 0, 295197
GlobalTracer [candidate] (298.049 ms) : 0, 298049
AppSec [baseline] (51.796 ms) : 0, 51796
AppSec [candidate] (51.99 ms) : 0, 51990
Remote Config [baseline] (716.768 µs) : 0, 717
Remote Config [candidate] (693.582 µs) : 0, 694
Telemetry [baseline] (7.575 ms) : 0, 7575
Telemetry [candidate] (7.556 ms) : 0, 7556
section appsec
BytebuddyAgent [baseline] (670.438 ms) : 0, 670438
BytebuddyAgent [candidate] (670.349 ms) : 0, 670349
GlobalTracer [baseline] (297.412 ms) : 0, 297412
GlobalTracer [candidate] (298.436 ms) : 0, 298436
AppSec [baseline] (150.596 ms) : 0, 150596
AppSec [candidate] (150.829 ms) : 0, 150829
Remote Config [baseline] (697.58 µs) : 0, 698
Remote Config [candidate] (701.065 µs) : 0, 701
Telemetry [baseline] (6.824 ms) : 0, 6824
Telemetry [candidate] (6.825 ms) : 0, 6825
section iast
BytebuddyAgent [baseline] (779.353 ms) : 0, 779353
BytebuddyAgent [candidate] (776.455 ms) : 0, 776455
GlobalTracer [baseline] (286.976 ms) : 0, 286976
GlobalTracer [candidate] (286.522 ms) : 0, 286522
AppSec [baseline] (53.675 ms) : 0, 53675
AppSec [candidate] (55.192 ms) : 0, 55192
Remote Config [baseline] (608.154 µs) : 0, 608
Remote Config [candidate] (592.968 µs) : 0, 593
Telemetry [baseline] (8.166 ms) : 0, 8166
Telemetry [candidate] (6.734 ms) : 0, 6734
IAST [baseline] (19.662 ms) : 0, 19662
IAST [candidate] (19.367 ms) : 0, 19367
section profiling
ProfilingAgent [baseline] (124.501 ms) : 0, 124501
ProfilingAgent [candidate] (123.542 ms) : 0, 123542
BytebuddyAgent [baseline] (661.28 ms) : 0, 661280
BytebuddyAgent [candidate] (663.166 ms) : 0, 663166
GlobalTracer [baseline] (376.624 ms) : 0, 376624
GlobalTracer [candidate] (377.097 ms) : 0, 377097
AppSec [baseline] (52.34 ms) : 0, 52340
AppSec [candidate] (52.145 ms) : 0, 52145
Remote Config [baseline] (664.758 µs) : 0, 665
Remote Config [candidate] (659.554 µs) : 0, 660
Telemetry [baseline] (7.514 ms) : 0, 7514
Telemetry [candidate] (7.485 ms) : 0, 7485
Profiling [baseline] (124.527 ms) : 0, 124527
Profiling [candidate] (123.567 ms) : 0, 123567
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.29.0-SNAPSHOT~6f11828329, baseline=1.29.0-SNAPSHOT~3dc58c7020

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.054 s) : 0, 1054174
Total [baseline] (8.724 s) : 0, 8723554
Agent [candidate] (1.063 s) : 0, 1062723
Total [candidate] (8.786 s) : 0, 8785591
section iast
Agent [baseline] (1.173 s) : 0, 1173047
Total [baseline] (9.281 s) : 0, 9281498
Agent [candidate] (1.2 s) : 0, 1199791
Total [candidate] (9.347 s) : 0, 9347170
section iast_TELEMETRY_OFF
Agent [baseline] (1.165 s) : 0, 1164640
Total [baseline] (9.231 s) : 0, 9231304
Agent [candidate] (1.18 s) : 0, 1179953
Total [candidate] (9.276 s) : 0, 9275991
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.054 s -
Agent iast 1.173 s 118.873 ms (11.3%)
Agent iast_TELEMETRY_OFF 1.165 s 110.466 ms (10.5%)
Total tracing 8.724 s -
Total iast 9.281 s 557.944 ms (6.4%)
Total iast_TELEMETRY_OFF 9.231 s 507.75 ms (5.8%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.063 s -
Agent iast 1.2 s 137.068 ms (12.9%)
Agent iast_TELEMETRY_OFF 1.18 s 117.229 ms (11.0%)
Total tracing 8.786 s -
Total iast 9.347 s 561.58 ms (6.4%)
Total iast_TELEMETRY_OFF 9.276 s 490.4 ms (5.6%)
gantt
    title insecure-bank - break down per module: candidate=1.29.0-SNAPSHOT~6f11828329, baseline=1.29.0-SNAPSHOT~3dc58c7020

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (665.009 ms) : 0, 665009
BytebuddyAgent [candidate] (670.485 ms) : 0, 670485
GlobalTracer [baseline] (294.971 ms) : 0, 294971
GlobalTracer [candidate] (297.49 ms) : 0, 297490
AppSec [baseline] (51.792 ms) : 0, 51792
AppSec [candidate] (51.967 ms) : 0, 51967
Remote Config [baseline] (696.389 µs) : 0, 696
Remote Config [candidate] (700.548 µs) : 0, 701
Telemetry [baseline] (7.487 ms) : 0, 7487
Telemetry [candidate] (7.578 ms) : 0, 7578
section iast
BytebuddyAgent [baseline] (772.272 ms) : 0, 772272
BytebuddyAgent [candidate] (789.141 ms) : 0, 789141
GlobalTracer [baseline] (284.865 ms) : 0, 284865
GlobalTracer [candidate] (292.914 ms) : 0, 292914
AppSec [baseline] (52.74 ms) : 0, 52740
AppSec [candidate] (55.023 ms) : 0, 55023
IAST [baseline] (20.177 ms) : 0, 20177
IAST [candidate] (20.469 ms) : 0, 20469
Remote Config [baseline] (599.648 µs) : 0, 600
Remote Config [candidate] (612.332 µs) : 0, 612
Telemetry [baseline] (8.221 ms) : 0, 8221
Telemetry [candidate] (6.759 ms) : 0, 6759
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (764.284 ms) : 0, 764284
BytebuddyAgent [candidate] (775.162 ms) : 0, 775162
GlobalTracer [baseline] (285.323 ms) : 0, 285323
GlobalTracer [candidate] (289.014 ms) : 0, 289014
AppSec [baseline] (55.711 ms) : 0, 55711
AppSec [candidate] (55.914 ms) : 0, 55914
IAST [baseline] (18.157 ms) : 0, 18157
IAST [candidate] (17.547 ms) : 0, 17547
Remote Config [baseline] (632.788 µs) : 0, 633
Remote Config [candidate] (625.689 µs) : 0, 626
Telemetry [baseline] (6.378 ms) : 0, 6378
Telemetry [candidate] (7.071 ms) : 0, 7071
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2024-01-24T15:50:52 2024-01-24T16:07:21
git_branch master andrea.marziali/kafka-consumer
git_commit_date 1706108160 1706109922
git_commit_sha 3dc58c7 6f11828
release_version 1.29.0-SNAPSHOT~3dc58c7020 1.29.0-SNAPSHOT~6f11828329
start_time 2024-01-24T15:50:39 2024-01-24T16:07:08
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1706112694 1706112694
ci_job_id 417483240 417483240
ci_pipeline_id 27108687 27108687
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 8 metrics, 14 unstable metrics.

Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.29.0-SNAPSHOT~6f11828329, baseline=1.29.0-SNAPSHOT~3dc58c7020
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.37 ms) : 1351, 1389
.   : milestone, 1370,
appsec (1.761 ms) : 1736, 1786
.   : milestone, 1761,
iast (1.51 ms) : 1486, 1535
.   : milestone, 1510,
profiling (1.582 ms) : 1556, 1608
.   : milestone, 1582,
tracing (1.498 ms) : 1473, 1522
.   : milestone, 1498,
section candidate
no_agent (1.361 ms) : 1342, 1380
.   : milestone, 1361,
appsec (1.781 ms) : 1755, 1806
.   : milestone, 1781,
iast (1.506 ms) : 1481, 1530
.   : milestone, 1506,
profiling (1.542 ms) : 1517, 1567
.   : milestone, 1542,
tracing (1.491 ms) : 1466, 1516
.   : milestone, 1491,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.37 ms [1.351 ms, 1.389 ms] -
appsec 1.761 ms [1.736 ms, 1.786 ms] 391.256 µs (28.6%)
iast 1.51 ms [1.486 ms, 1.535 ms] 140.179 µs (10.2%)
profiling 1.582 ms [1.556 ms, 1.608 ms] 211.853 µs (15.5%)
tracing 1.498 ms [1.473 ms, 1.522 ms] 127.744 µs (9.3%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.361 ms [1.342 ms, 1.38 ms] -
appsec 1.781 ms [1.755 ms, 1.806 ms] 419.703 µs (30.8%)
iast 1.506 ms [1.481 ms, 1.53 ms] 144.755 µs (10.6%)
profiling 1.542 ms [1.517 ms, 1.567 ms] 181.125 µs (13.3%)
tracing 1.491 ms [1.466 ms, 1.516 ms] 129.921 µs (9.5%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.29.0-SNAPSHOT~6f11828329, baseline=1.29.0-SNAPSHOT~3dc58c7020
    dateFormat X
    axisFormat %s
section baseline
no_agent (366.83 µs) : 346, 388
.   : milestone, 367,
iast (474.334 µs) : 454, 495
.   : milestone, 474,
iast_FULL (534.335 µs) : 514, 555
.   : milestone, 534,
iast_INACTIVE (444.812 µs) : 424, 466
.   : milestone, 445,
iast_TELEMETRY_OFF (476.85 µs) : 456, 498
.   : milestone, 477,
tracing (436.253 µs) : 416, 457
.   : milestone, 436,
section candidate
no_agent (365.049 µs) : 345, 386
.   : milestone, 365,
iast (475.472 µs) : 455, 496
.   : milestone, 475,
iast_FULL (540.689 µs) : 520, 561
.   : milestone, 541,
iast_INACTIVE (438.363 µs) : 418, 459
.   : milestone, 438,
iast_TELEMETRY_OFF (468.976 µs) : 448, 490
.   : milestone, 469,
tracing (442.66 µs) : 422, 463
.   : milestone, 443,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 366.83 µs [346.11 µs, 387.551 µs] -
iast 474.334 µs [453.684 µs, 494.985 µs] 107.504 µs (29.3%)
iast_FULL 534.335 µs [513.871 µs, 554.8 µs] 167.505 µs (45.7%)
iast_INACTIVE 444.812 µs [423.686 µs, 465.937 µs] 77.981 µs (21.3%)
iast_TELEMETRY_OFF 476.85 µs [455.908 µs, 497.791 µs] 110.019 µs (30.0%)
tracing 436.253 µs [415.727 µs, 456.779 µs] 69.422 µs (18.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 365.049 µs [344.545 µs, 385.553 µs] -
iast 475.472 µs [454.516 µs, 496.428 µs] 110.423 µs (30.2%)
iast_FULL 540.689 µs [520.281 µs, 561.098 µs] 175.64 µs (48.1%)
iast_INACTIVE 438.363 µs [418.048 µs, 458.679 µs] 73.314 µs (20.1%)
iast_TELEMETRY_OFF 468.976 µs [448.272 µs, 489.681 µs] 103.927 µs (28.5%)
tracing 442.66 µs [421.916 µs, 463.404 µs] 77.611 µs (21.3%)

@pr-commenter
Copy link

pr-commenter bot commented Jan 24, 2024

Kafka / consumer-benchmark

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/kafka-consumer
git_commit_date 1706108160 1706109922
git_commit_sha 3dc58c7 6f11828
See matching parameters
Baseline Candidate
ci_job_date 1706111277 1706111277
ci_job_id 417483242 417483242
ci_pipeline_id 27108687 27108687
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
jdkVersion 11.0.21 11.0.21
jmhVersion 1.36 1.36
jvm /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/lib/jvm/java-11-openjdk-amd64/bin/java
jvmArgs -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/go/src/github.com/DataDog/apm-reliability/dd-trace-java/platform/src/consumer-benchmark/build/tmp/jmh -Duser.country=US -Duser.language=en -Duser.variant -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/go/src/github.com/DataDog/apm-reliability/dd-trace-java/platform/src/consumer-benchmark/build/tmp/jmh -Duser.country=US -Duser.language=en -Duser.variant
vmName OpenJDK 64-Bit Server VM OpenJDK 64-Bit Server VM
vmVersion 11.0.21+9-post-Ubuntu-0ubuntu122.04 11.0.21+9-post-Ubuntu-0ubuntu122.04

Summary

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

scenario Δ mean throughput
scenario:not-instrumented/KafkaConsumerBenchmark.benchConsume better
[+4661.035op/s; +14837.190op/s] or [+1.592%; +5.066%]
See unchanged results
scenario Δ mean throughput
scenario:only-tracing-dsm-disabled-benchmarks/KafkaConsumerBenchmark.benchConsume same
scenario:only-tracing-dsm-enabled-benchmarks/KafkaConsumerBenchmark.benchConsume unsure
[-21119.935op/s; -3170.457op/s] or [-6.648%; -0.998%]

@amarziali amarziali merged commit 1047c95 into master Jan 24, 2024
84 checks passed
@amarziali amarziali deleted the andrea.marziali/kafka-consumer branch January 24, 2024 16:28
@github-actions github-actions bot added this to the 1.29.0 milestone Jan 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
inst: kafka Kafka instrumentation type: bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants