Encode the last seen Datadog span ID within tracestate#7067
Conversation
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 1 performance regressions! Performance is the same for 49 metrics, 13 unstable metrics.
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.069 s) : 0, 1069018
Total [baseline] (10.4 s) : 0, 10400376
Agent [candidate] (1.066 s) : 0, 1065567
Total [candidate] (10.412 s) : 0, 10412428
section appsec
Agent [baseline] (1.18 s) : 0, 1180114
Total [baseline] (10.435 s) : 0, 10435392
Agent [candidate] (1.176 s) : 0, 1175613
Total [candidate] (10.488 s) : 0, 10487999
section iast
Agent [baseline] (1.168 s) : 0, 1168106
Total [baseline] (10.67 s) : 0, 10670173
Agent [candidate] (1.176 s) : 0, 1176255
Total [candidate] (10.752 s) : 0, 10751611
section profiling
Agent [baseline] (1.257 s) : 0, 1256569
Total [baseline] (10.599 s) : 0, 10599025
Agent [candidate] (1.258 s) : 0, 1258261
Total [candidate] (10.703 s) : 0, 10702661
gantt
title petclinic - break down per module: candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (669.956 ms) : 0, 669956
BytebuddyAgent [candidate] (656.901 ms) : 0, 656901
GlobalTracer [baseline] (305.596 ms) : 0, 305596
GlobalTracer [candidate] (315.208 ms) : 0, 315208
AppSec [baseline] (50.162 ms) : 0, 50162
AppSec [candidate] (50.336 ms) : 0, 50336
Remote Config [baseline] (662.949 µs) : 0, 663
Remote Config [candidate] (727.426 µs) : 0, 727
Telemetry [baseline] (7.556 ms) : 0, 7556
Telemetry [candidate] (7.659 ms) : 0, 7659
Logs Intake [baseline] (388.446 µs) : 0, 388
section appsec
BytebuddyAgent [baseline] (674.88 ms) : 0, 674880
BytebuddyAgent [candidate] (674.242 ms) : 0, 674242
GlobalTracer [baseline] (297.633 ms) : 0, 297633
GlobalTracer [candidate] (296.041 ms) : 0, 296041
AppSec [baseline] (153.052 ms) : 0, 153052
AppSec [candidate] (152.644 ms) : 0, 152644
Remote Config [baseline] (642.504 µs) : 0, 643
Remote Config [candidate] (1.509 ms) : 0, 1509
Telemetry [baseline] (8.454 ms) : 0, 8454
Telemetry [candidate] (6.87 ms) : 0, 6870
Logs Intake [baseline] (334.23 µs) : 0, 334
IAST [baseline] (21.523 ms) : 0, 21523
IAST [candidate] (19.857 ms) : 0, 19857
section iast
BytebuddyAgent [baseline] (778.395 ms) : 0, 778395
BytebuddyAgent [candidate] (785.172 ms) : 0, 785172
GlobalTracer [baseline] (292.97 ms) : 0, 292970
GlobalTracer [candidate] (295.597 ms) : 0, 295597
AppSec [baseline] (47.146 ms) : 0, 47146
AppSec [candidate] (46.99 ms) : 0, 46990
Remote Config [baseline] (582.716 µs) : 0, 583
Remote Config [candidate] (597.28 µs) : 0, 597
Telemetry [baseline] (9.961 ms) : 0, 9961
Telemetry [candidate] (7.757 ms) : 0, 7757
Logs Intake [baseline] (310.082 µs) : 0, 310
IAST [baseline] (25.485 ms) : 0, 25485
IAST [candidate] (26.79 ms) : 0, 26790
section profiling
ProfilingAgent [baseline] (96.421 ms) : 0, 96421
ProfilingAgent [candidate] (96.029 ms) : 0, 96029
BytebuddyAgent [baseline] (660.336 ms) : 0, 660336
BytebuddyAgent [candidate] (661.742 ms) : 0, 661742
GlobalTracer [baseline] (384.63 ms) : 0, 384630
GlobalTracer [candidate] (385.059 ms) : 0, 385059
AppSec [baseline] (50.313 ms) : 0, 50313
AppSec [candidate] (50.773 ms) : 0, 50773
Remote Config [baseline] (740.184 µs) : 0, 740
Remote Config [candidate] (783.547 µs) : 0, 784
Telemetry [baseline] (7.344 ms) : 0, 7344
Telemetry [candidate] (7.313 ms) : 0, 7313
Profiling [baseline] (96.446 ms) : 0, 96446
Profiling [candidate] (96.054 ms) : 0, 96054
Logs Intake [baseline] (340.769 µs) : 0, 341
Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.062 s) : 0, 1061742
Total [baseline] (8.527 s) : 0, 8526731
Agent [candidate] (1.057 s) : 0, 1056763
Total [candidate] (8.524 s) : 0, 8524413
section iast
Agent [baseline] (1.169 s) : 0, 1169206
Total [baseline] (8.998 s) : 0, 8997867
Agent [candidate] (1.173 s) : 0, 1172995
Total [candidate] (9.011 s) : 0, 9010642
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.173 s) : 0, 1172855
Total [baseline] (8.979 s) : 0, 8979380
Agent [candidate] (1.166 s) : 0, 1165774
Total [candidate] (9.004 s) : 0, 9004231
section iast_TELEMETRY_OFF
Agent [baseline] (1.164 s) : 0, 1164370
Total [baseline] (8.983 s) : 0, 8983232
Agent [candidate] (1.164 s) : 0, 1163832
Total [candidate] (8.986 s) : 0, 8985574
gantt
title insecure-bank - break down per module: candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (664.908 ms) : 0, 664908
BytebuddyAgent [candidate] (651.255 ms) : 0, 651255
GlobalTracer [baseline] (303.733 ms) : 0, 303733
GlobalTracer [candidate] (312.687 ms) : 0, 312687
AppSec [baseline] (50.156 ms) : 0, 50156
AppSec [candidate] (50.019 ms) : 0, 50019
Remote Config [baseline] (697.785 µs) : 0, 698
Remote Config [candidate] (728.756 µs) : 0, 729
Telemetry [baseline] (7.545 ms) : 0, 7545
Telemetry [candidate] (7.578 ms) : 0, 7578
Logs Intake [baseline] (393.122 µs) : 0, 393
section iast
BytebuddyAgent [baseline] (778.98 ms) : 0, 778980
BytebuddyAgent [candidate] (783.179 ms) : 0, 783179
GlobalTracer [baseline] (293.312 ms) : 0, 293312
GlobalTracer [candidate] (294.811 ms) : 0, 294811
AppSec [baseline] (47.223 ms) : 0, 47223
AppSec [candidate] (46.692 ms) : 0, 46692
IAST [baseline] (28.717 ms) : 0, 28717
IAST [candidate] (27.363 ms) : 0, 27363
Remote Config [baseline] (561.685 µs) : 0, 562
Remote Config [candidate] (590.962 µs) : 0, 591
Telemetry [baseline] (6.855 ms) : 0, 6855
Telemetry [candidate] (6.962 ms) : 0, 6962
Logs Intake [baseline] (303.364 µs) : 0, 303
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (783.758 ms) : 0, 783758
BytebuddyAgent [candidate] (778.683 ms) : 0, 778683
GlobalTracer [baseline] (295.12 ms) : 0, 295120
GlobalTracer [candidate] (292.88 ms) : 0, 292880
AppSec [baseline] (46.878 ms) : 0, 46878
AppSec [candidate] (46.486 ms) : 0, 46486
IAST [baseline] (24.997 ms) : 0, 24997
IAST [candidate] (24.617 ms) : 0, 24617
Remote Config [baseline] (582.551 µs) : 0, 583
Remote Config [candidate] (584.714 µs) : 0, 585
Telemetry [baseline] (7.783 ms) : 0, 7783
Telemetry [candidate] (9.192 ms) : 0, 9192
Logs Intake [baseline] (311.604 µs) : 0, 312
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (776.196 ms) : 0, 776196
BytebuddyAgent [candidate] (776.462 ms) : 0, 776462
GlobalTracer [baseline] (293.809 ms) : 0, 293809
GlobalTracer [candidate] (293.23 ms) : 0, 293230
AppSec [baseline] (49.33 ms) : 0, 49330
AppSec [candidate] (50.14 ms) : 0, 50140
IAST [baseline] (21.737 ms) : 0, 21737
IAST [candidate] (23.356 ms) : 0, 23356
Remote Config [baseline] (566.384 µs) : 0, 566
Remote Config [candidate] (569.941 µs) : 0, 570
Telemetry [baseline] (9.129 ms) : 0, 9129
Telemetry [candidate] (6.755 ms) : 0, 6755
Logs Intake [baseline] (294.985 µs) : 0, 295
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 16 unstable metrics. Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section baseline
no_agent (371.05 µs) : 352, 390
. : milestone, 371,
iast (484.455 µs) : 463, 506
. : milestone, 484,
iast_FULL (550.211 µs) : 529, 571
. : milestone, 550,
iast_GLOBAL (506.33 µs) : 484, 528
. : milestone, 506,
iast_HARDCODED_SECRET_DISABLED (488.152 µs) : 466, 510
. : milestone, 488,
iast_INACTIVE (453.766 µs) : 432, 475
. : milestone, 454,
iast_TELEMETRY_OFF (466.041 µs) : 445, 487
. : milestone, 466,
tracing (454.365 µs) : 434, 475
. : milestone, 454,
section candidate
no_agent (359.558 µs) : 340, 379
. : milestone, 360,
iast (486.227 µs) : 465, 507
. : milestone, 486,
iast_FULL (552.152 µs) : 531, 573
. : milestone, 552,
iast_GLOBAL (506.333 µs) : 485, 528
. : milestone, 506,
iast_HARDCODED_SECRET_DISABLED (480.525 µs) : 459, 502
. : milestone, 481,
iast_INACTIVE (455.207 µs) : 434, 476
. : milestone, 455,
iast_TELEMETRY_OFF (474.13 µs) : 453, 495
. : milestone, 474,
tracing (444.351 µs) : 424, 465
. : milestone, 444,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section baseline
no_agent (1.357 ms) : 1337, 1376
. : milestone, 1357,
appsec (1.718 ms) : 1694, 1742
. : milestone, 1718,
appsec_no_iast (1.711 ms) : 1686, 1736
. : milestone, 1711,
iast (1.485 ms) : 1462, 1508
. : milestone, 1485,
profiling (1.513 ms) : 1487, 1539
. : milestone, 1513,
tracing (1.455 ms) : 1431, 1478
. : milestone, 1455,
section candidate
no_agent (1.347 ms) : 1327, 1367
. : milestone, 1347,
appsec (1.737 ms) : 1714, 1761
. : milestone, 1737,
appsec_no_iast (1.733 ms) : 1709, 1758
. : milestone, 1733,
iast (1.49 ms) : 1467, 1513
. : milestone, 1490,
profiling (1.483 ms) : 1460, 1507
. : milestone, 1483,
tracing (1.482 ms) : 1458, 1505
. : milestone, 1482,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 0 unstable metrics. Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section baseline
no_agent (15.5 s) : 15500000, 15500000
. : milestone, 15500000,
appsec (15.316 s) : 15316000, 15316000
. : milestone, 15316000,
iast (18.862 s) : 18862000, 18862000
. : milestone, 18862000,
iast_GLOBAL (18.091 s) : 18091000, 18091000
. : milestone, 18091000,
profiling (14.84 s) : 14840000, 14840000
. : milestone, 14840000,
tracing (15.262 s) : 15262000, 15262000
. : milestone, 15262000,
section candidate
no_agent (15.691 s) : 15691000, 15691000
. : milestone, 15691000,
appsec (14.849 s) : 14849000, 14849000
. : milestone, 14849000,
iast (18.46 s) : 18460000, 18460000
. : milestone, 18460000,
iast_GLOBAL (18.223 s) : 18223000, 18223000
. : milestone, 18223000,
profiling (15.263 s) : 15263000, 15263000
. : milestone, 15263000,
tracing (14.795 s) : 14795000, 14795000
. : milestone, 14795000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.36.0-SNAPSHOT~8fd01dc4df, baseline=1.36.0-SNAPSHOT~7afb3eb324
dateFormat X
axisFormat %s
section baseline
no_agent (1.464 ms) : 1453, 1476
. : milestone, 1464,
appsec (2.212 ms) : 2178, 2246
. : milestone, 2212,
iast (1.973 ms) : 1932, 2014
. : milestone, 1973,
iast_GLOBAL (1.999 ms) : 1958, 2040
. : milestone, 1999,
profiling (1.857 ms) : 1823, 1890
. : milestone, 1857,
tracing (1.834 ms) : 1801, 1866
. : milestone, 1834,
section candidate
no_agent (1.472 ms) : 1461, 1484
. : milestone, 1472,
appsec (2.217 ms) : 2183, 2251
. : milestone, 2217,
iast (1.974 ms) : 1933, 2015
. : milestone, 1974,
iast_GLOBAL (2.02 ms) : 1978, 2061
. : milestone, 2020,
profiling (1.868 ms) : 1834, 1902
. : milestone, 1868,
tracing (1.847 ms) : 1814, 1879
. : milestone, 1847,
|
I would add additional tests to |
…src/test/groovy/opentelemetry14/context/propagation/W3cTest.groovy
|
Looks ok, but I have questions around the handling of Suggested next steps:
I believe those two changes would align this with the spec and avoid unnecessary tracestate cache invalidations - but I'd appreciate it if you could also check my reading of the spec :) |
What Does This Do
This adds a p sub-key to the dd= tracestate with the value of the last seen parent Datadog Span ID encoded as a 16-character hex string. When extracting tracecontext headers the value of p will be added as a _dd.parent_id span tag which can then be used by the backend to reparent the span, if necessary.
Motivation
When there are datadog and tracecontext headers used in a distributed context we may run into issues where orphaned spans are created within a trace because a W3C tracer doesn't send spans. This gets around that by keeping track of the last seen Datadog span ID within the tracestate.
Additional Notes
Jira ticket: [AIT-9906]