-
Notifications
You must be signed in to change notification settings - Fork 324
Fix ISO 8601 date parsing to support variable precision #10419
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
Conversation
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 57 metrics, 8 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.089 s) : 0, 1089483
Total [baseline] (8.782 s) : 0, 8782239
Agent [candidate] (1.084 s) : 0, 1084167
Total [candidate] (8.748 s) : 0, 8747611
section iast
Agent [baseline] (1.23 s) : 0, 1229959
Total [baseline] (9.344 s) : 0, 9344319
Agent [candidate] (1.222 s) : 0, 1222175
Total [candidate] (9.319 s) : 0, 9319317
gantt
title insecure-bank - break down per module: candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.198 ms) : 0, 1198
crashtracking [candidate] (1.183 ms) : 0, 1183
BytebuddyAgent [baseline] (655.464 ms) : 0, 655464
BytebuddyAgent [candidate] (651.445 ms) : 0, 651445
GlobalTracer [baseline] (283.753 ms) : 0, 283753
GlobalTracer [candidate] (283.083 ms) : 0, 283083
AppSec [baseline] (32.767 ms) : 0, 32767
AppSec [candidate] (32.547 ms) : 0, 32547
Debugger [baseline] (67.187 ms) : 0, 67187
Debugger [candidate] (67.015 ms) : 0, 67015
Remote Config [baseline] (705.898 µs) : 0, 706
Remote Config [candidate] (637.654 µs) : 0, 638
Telemetry [baseline] (8.974 ms) : 0, 8974
Telemetry [candidate] (8.908 ms) : 0, 8908
Flare Poller [baseline] (3.879 ms) : 0, 3879
Flare Poller [candidate] (3.798 ms) : 0, 3798
section iast
crashtracking [baseline] (1.188 ms) : 0, 1188
crashtracking [candidate] (1.193 ms) : 0, 1193
BytebuddyAgent [baseline] (797.523 ms) : 0, 797523
BytebuddyAgent [candidate] (791.734 ms) : 0, 791734
GlobalTracer [baseline] (257.121 ms) : 0, 257121
GlobalTracer [candidate] (256.014 ms) : 0, 256014
AppSec [baseline] (32.828 ms) : 0, 32828
AppSec [candidate] (34.365 ms) : 0, 34365
Debugger [baseline] (66.176 ms) : 0, 66176
Debugger [candidate] (64.299 ms) : 0, 64299
Remote Config [baseline] (599.621 µs) : 0, 600
Remote Config [candidate] (588.644 µs) : 0, 589
Telemetry [baseline] (8.401 ms) : 0, 8401
Telemetry [candidate] (8.389 ms) : 0, 8389
Flare Poller [baseline] (3.558 ms) : 0, 3558
Flare Poller [candidate] (3.561 ms) : 0, 3561
IAST [baseline] (27.062 ms) : 0, 27062
IAST [candidate] (26.749 ms) : 0, 26749
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.088 s) : 0, 1087959
Total [baseline] (11.017 s) : 0, 11017108
Agent [candidate] (1.085 s) : 0, 1084654
Total [candidate] (10.761 s) : 0, 10761484
section appsec
Agent [baseline] (1.265 s) : 0, 1265335
Total [baseline] (11.061 s) : 0, 11060561
Agent [candidate] (1.267 s) : 0, 1267053
Total [candidate] (11.009 s) : 0, 11008673
section iast
Agent [baseline] (1.23 s) : 0, 1230030
Total [baseline] (11.167 s) : 0, 11166613
Agent [candidate] (1.233 s) : 0, 1233164
Total [candidate] (11.202 s) : 0, 11202028
section profiling
Agent [baseline] (1.208 s) : 0, 1207537
Total [baseline] (10.896 s) : 0, 10896170
Agent [candidate] (1.206 s) : 0, 1205874
Total [candidate] (10.983 s) : 0, 10983426
gantt
title petclinic - break down per module: candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.175 ms) : 0, 1175
crashtracking [candidate] (1.175 ms) : 0, 1175
BytebuddyAgent [baseline] (652.945 ms) : 0, 652945
BytebuddyAgent [candidate] (651.965 ms) : 0, 651965
GlobalTracer [baseline] (283.492 ms) : 0, 283492
GlobalTracer [candidate] (282.721 ms) : 0, 282721
AppSec [baseline] (32.857 ms) : 0, 32857
AppSec [candidate] (32.555 ms) : 0, 32555
Debugger [baseline] (68.542 ms) : 0, 68542
Debugger [candidate] (66.733 ms) : 0, 66733
Remote Config [baseline] (639.778 µs) : 0, 640
Remote Config [candidate] (639.823 µs) : 0, 640
Telemetry [baseline] (9.021 ms) : 0, 9021
Telemetry [candidate] (8.962 ms) : 0, 8962
Flare Poller [baseline] (3.83 ms) : 0, 3830
Flare Poller [candidate] (4.5 ms) : 0, 4500
section appsec
crashtracking [baseline] (1.176 ms) : 0, 1176
crashtracking [candidate] (1.193 ms) : 0, 1193
BytebuddyAgent [baseline] (690.921 ms) : 0, 690921
BytebuddyAgent [candidate] (692.909 ms) : 0, 692909
GlobalTracer [baseline] (258.961 ms) : 0, 258961
GlobalTracer [candidate] (259.355 ms) : 0, 259355
IAST [baseline] (24.595 ms) : 0, 24595
IAST [candidate] (24.562 ms) : 0, 24562
AppSec [baseline] (172.975 ms) : 0, 172975
AppSec [candidate] (173.163 ms) : 0, 173163
Debugger [baseline] (67.492 ms) : 0, 67492
Debugger [candidate] (66.686 ms) : 0, 66686
Remote Config [baseline] (791.453 µs) : 0, 791
Remote Config [candidate] (783.403 µs) : 0, 783
Telemetry [baseline] (9.305 ms) : 0, 9305
Telemetry [candidate] (9.192 ms) : 0, 9192
Flare Poller [baseline] (3.667 ms) : 0, 3667
Flare Poller [candidate] (3.739 ms) : 0, 3739
section iast
crashtracking [baseline] (1.178 ms) : 0, 1178
crashtracking [candidate] (1.189 ms) : 0, 1189
BytebuddyAgent [baseline] (796.761 ms) : 0, 796761
BytebuddyAgent [candidate] (798.803 ms) : 0, 798803
GlobalTracer [baseline] (256.951 ms) : 0, 256951
GlobalTracer [candidate] (257.569 ms) : 0, 257569
IAST [baseline] (27.135 ms) : 0, 27135
IAST [candidate] (27.215 ms) : 0, 27215
AppSec [baseline] (33.649 ms) : 0, 33649
AppSec [candidate] (34.592 ms) : 0, 34592
Debugger [baseline] (66.47 ms) : 0, 66470
Debugger [candidate] (65.726 ms) : 0, 65726
Remote Config [baseline] (572.798 µs) : 0, 573
Remote Config [candidate] (565.326 µs) : 0, 565
Telemetry [baseline] (8.372 ms) : 0, 8372
Telemetry [candidate] (8.455 ms) : 0, 8455
Flare Poller [baseline] (3.562 ms) : 0, 3562
Flare Poller [candidate] (3.615 ms) : 0, 3615
section profiling
crashtracking [baseline] (1.227 ms) : 0, 1227
crashtracking [candidate] (1.224 ms) : 0, 1224
BytebuddyAgent [baseline] (703.531 ms) : 0, 703531
BytebuddyAgent [candidate] (702.198 ms) : 0, 702198
GlobalTracer [baseline] (221.456 ms) : 0, 221456
GlobalTracer [candidate] (221.153 ms) : 0, 221153
AppSec [baseline] (32.385 ms) : 0, 32385
AppSec [candidate] (32.195 ms) : 0, 32195
Debugger [baseline] (68.268 ms) : 0, 68268
Debugger [candidate] (68.095 ms) : 0, 68095
Remote Config [baseline] (627.837 µs) : 0, 628
Remote Config [candidate] (637.397 µs) : 0, 637
Telemetry [baseline] (8.841 ms) : 0, 8841
Telemetry [candidate] (8.959 ms) : 0, 8959
Flare Poller [baseline] (3.735 ms) : 0, 3735
Flare Poller [candidate] (3.808 ms) : 0, 3808
ProfilingAgent [baseline] (97.691 ms) : 0, 97691
ProfilingAgent [candidate] (97.64 ms) : 0, 97640
Profiling [baseline] (98.275 ms) : 0, 98275
Profiling [candidate] (98.216 ms) : 0, 98216
LoadParameters
See matching parameters
SummaryFound 1 performance improvements and 2 performance regressions! Performance is the same for 16 metrics, 17 unstable metrics.
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section baseline
no_agent (19.363 ms) : 19163, 19563
. : milestone, 19363,
appsec (18.951 ms) : 18757, 19144
. : milestone, 18951,
code_origins (17.78 ms) : 17604, 17957
. : milestone, 17780,
iast (18.135 ms) : 17954, 18317
. : milestone, 18135,
profiling (18.998 ms) : 18808, 19189
. : milestone, 18998,
tracing (17.647 ms) : 17468, 17826
. : milestone, 17647,
section candidate
no_agent (19.213 ms) : 19015, 19412
. : milestone, 19213,
appsec (18.839 ms) : 18652, 19026
. : milestone, 18839,
code_origins (18.084 ms) : 17902, 18265
. : milestone, 18084,
iast (18.819 ms) : 18631, 19007
. : milestone, 18819,
profiling (18.978 ms) : 18786, 19170
. : milestone, 18978,
tracing (17.813 ms) : 17635, 17992
. : milestone, 17813,
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section baseline
no_agent (1.175 ms) : 1163, 1186
. : milestone, 1175,
iast (3.178 ms) : 3136, 3220
. : milestone, 3178,
iast_FULL (5.545 ms) : 5490, 5600
. : milestone, 5545,
iast_GLOBAL (3.638 ms) : 3578, 3698
. : milestone, 3638,
profiling (2.086 ms) : 2068, 2104
. : milestone, 2086,
tracing (1.791 ms) : 1776, 1805
. : milestone, 1791,
section candidate
no_agent (1.172 ms) : 1160, 1183
. : milestone, 1172,
iast (3.266 ms) : 3222, 3309
. : milestone, 3266,
iast_FULL (5.999 ms) : 5939, 6060
. : milestone, 5999,
iast_GLOBAL (3.476 ms) : 3424, 3528
. : milestone, 3476,
profiling (1.949 ms) : 1933, 1965
. : milestone, 1949,
tracing (1.879 ms) : 1861, 1897
. : milestone, 1879,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics. Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section baseline
no_agent (14.828 s) : 14828000, 14828000
. : milestone, 14828000,
appsec (15.033 s) : 15033000, 15033000
. : milestone, 15033000,
iast (18.114 s) : 18114000, 18114000
. : milestone, 18114000,
iast_GLOBAL (17.981 s) : 17981000, 17981000
. : milestone, 17981000,
profiling (14.953 s) : 14953000, 14953000
. : milestone, 14953000,
tracing (14.71 s) : 14710000, 14710000
. : milestone, 14710000,
section candidate
no_agent (14.725 s) : 14725000, 14725000
. : milestone, 14725000,
appsec (14.798 s) : 14798000, 14798000
. : milestone, 14798000,
iast (17.966 s) : 17966000, 17966000
. : milestone, 17966000,
iast_GLOBAL (17.653 s) : 17653000, 17653000
. : milestone, 17653000,
profiling (15.467 s) : 15467000, 15467000
. : milestone, 15467000,
tracing (14.655 s) : 14655000, 14655000
. : milestone, 14655000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~b9aca431bb, baseline=1.59.0-SNAPSHOT~637f9ce1d3
dateFormat X
axisFormat %s
section baseline
no_agent (1.472 ms) : 1460, 1483
. : milestone, 1472,
appsec (3.737 ms) : 3518, 3956
. : milestone, 3737,
iast (2.221 ms) : 2156, 2287
. : milestone, 2221,
iast_GLOBAL (2.267 ms) : 2201, 2333
. : milestone, 2267,
profiling (2.062 ms) : 2009, 2115
. : milestone, 2062,
tracing (2.055 ms) : 2003, 2107
. : milestone, 2055,
section candidate
no_agent (1.475 ms) : 1463, 1486
. : milestone, 1475,
appsec (3.745 ms) : 3524, 3967
. : milestone, 3745,
iast (2.213 ms) : 2148, 2279
. : milestone, 2213,
iast_GLOBAL (2.267 ms) : 2201, 2333
. : milestone, 2267,
profiling (2.092 ms) : 2037, 2147
. : milestone, 2092,
tracing (2.059 ms) : 2007, 2111
. : milestone, 2059,
|
f2f0ae8 to
6261288
Compare
The DateAdapter was using a DateTimeFormatter with a fixed [.SSS] pattern, which only supports optional 3-digit milliseconds. This caused dates with 6-digit microsecond precision (e.g., "2025-09-23T15:48:37.235982Z") sent by the backend to silently fail parsing (returning null). Changed to use Instant.parse() which correctly handles all valid ISO 8601 date formats including: - No fractional seconds: 2020-01-01T00:00:00Z - 1-9 digit fractional seconds (beyond ms precision truncated by Date) - UTC offsets: 2023-01-01T01:00:00+01:00 Added comprehensive unit tests for various date precisions and updated smoke test data with microsecond-date-test flag and test cases.
6261288 to
b9aca43
Compare
|
Hi! 👋 Thanks for your pull request! 🎉 To help us review it, please make sure to:
If you need help, please check our contributing guidelines. |
typotter
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice fix, great docs and tests. ![]()
| final Instant instant = Instant.from(temporalAccessor); | ||
| return Date.from(instant); | ||
| // Use OffsetDateTime which handles variable precision fractional seconds (0-9 digits) | ||
| // and UTC offsets (+01:00, -05:00, Z) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Motivation
The DateAdapter was using a DateTimeFormatter with a fixed [.SSS] pattern, which only supports optional 3-digit milliseconds. This caused dates with 6-digit microsecond precision (e.g., "2025-09-23T15:48:37.235982Z") sent by the backend to silently fail parsing (returning null).
Associated system test: DataDog/system-tests#6087
What Does This Do
Changed to use Instant.parse() which correctly handles all valid ISO 8601 date formats including:
Added comprehensive unit tests for various date precisions and updated smoke test data with microsecond-date-test flag and test cases.
Additional Notes
Contributor Checklist
type:and (comp:orinst:) labels in addition to any useful labelsclose,fixor any linking keywords when referencing an issue.Use
solvesinstead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]