Commit dc3f873
authored
[DSM] Guard against future timestamps when extracting pathway context (#8672)
## Summary of changes
Guards against future timestamps when extracting pathwayContext and
calculating `pathwayLatencyNs`
## Reason for change
We decode the `dd-pathway-ctx` from inbound headers, and use the decoded
`PathwayStart` to compute `pathwayLatencyNs`. This is then used to
calculate an `originTimestamp` and is added to `_originBuckets`. We then
only flush `_originBuckets` for which the start time is <= the current
bucket window.
If a "future" timestamp ends up in `PathwayStart`, then we would end up
with that future bucket never being flushed and accumulating. This PR
guards against those future timestamps so we don't end up with unbounded
growth.
## Implementation details
Add two guards:
- In `SetCheckpoint`, guard against generating negative
`pathwayLatencyNs` or `edgeLatencyNs`
- In `PathwayContextEncoder.Decode`, reject data points with a "future"
`PathwayStart` time
- Using a tolerance here of 60s to make sure clock skew issues don't
bite us. I _think_ that number seems reasonable, but open to
suggestions.
- I was initially concerned about daylight savings etc, but given we're
using UTC for all of this, that shouldn't be an issue
## Test coverage
Added a bunch of additional unit tests around this.1 parent 3125784 commit dc3f873
3 files changed
Lines changed: 96 additions & 4 deletions
File tree
- tracer
- src/Datadog.Trace/DataStreamsMonitoring
- test/Datadog.Trace.Tests/DataStreamsMonitoring
Lines changed: 7 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
325 | 325 | | |
326 | 326 | | |
327 | 327 | | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
328 | 333 | | |
329 | 334 | | |
330 | 335 | | |
331 | 336 | | |
332 | 337 | | |
333 | 338 | | |
334 | 339 | | |
335 | | - | |
336 | | - | |
| 340 | + | |
| 341 | + | |
337 | 342 | | |
338 | 343 | | |
339 | 344 | | |
| |||
Lines changed: 22 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
24 | 30 | | |
25 | 31 | | |
26 | 32 | | |
| |||
108 | 114 | | |
109 | 115 | | |
110 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
111 | 126 | | |
112 | 127 | | |
113 | 128 | | |
| |||
152 | 167 | | |
153 | 168 | | |
154 | 169 | | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
155 | 177 | | |
156 | 178 | | |
157 | 179 | | |
| |||
Lines changed: 67 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
| 11 | + | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
| |||
18 | 20 | | |
19 | 21 | | |
20 | 22 | | |
| 23 | + | |
21 | 24 | | |
22 | 25 | | |
23 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
24 | 29 | | |
| 30 | + | |
| 31 | + | |
25 | 32 | | |
26 | 33 | | |
27 | 34 | | |
28 | 35 | | |
29 | | - | |
30 | 36 | | |
31 | 37 | | |
32 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
33 | 51 | | |
34 | 52 | | |
35 | 53 | | |
| |||
105 | 123 | | |
106 | 124 | | |
107 | 125 | | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
108 | 157 | | |
109 | 158 | | |
110 | 159 | | |
| |||
120 | 169 | | |
121 | 170 | | |
122 | 171 | | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
123 | 188 | | |
124 | 189 | | |
125 | 190 | | |
| |||
0 commit comments