fix(debugger): apply redaction to dictionary iterator key/value#8641
fix(debugger): apply redaction to dictionary iterator key/value#8641dudikeleti wants to merge 1 commit into
Conversation
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8641) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (75ms) : 71, 79
master - mean (73ms) : 70, 75
section Bailout
This PR (8641) - mean (78ms) : 75, 82
master - mean (79ms) : 75, 83
section CallTarget+Inlining+NGEN
This PR (8641) - mean (1,103ms) : 1039, 1167
master - mean (1,104ms) : 1056, 1153
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (116ms) : 108, 123
master - mean (113ms) : 109, 117
section Bailout
This PR (8641) - mean (114ms) : 112, 117
master - mean (118ms) : 113, 124
section CallTarget+Inlining+NGEN
This PR (8641) - mean (793ms) : 767, 819
master - mean (787ms) : 759, 814
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (101ms) : 98, 104
master - mean (102ms) : 98, 106
section Bailout
This PR (8641) - mean (105ms) : 99, 112
master - mean (106ms) : 100, 111
section CallTarget+Inlining+NGEN
This PR (8641) - mean (946ms) : 912, 979
master - mean (946ms) : 907, 986
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (99ms) : 95, 104
master - mean (99ms) : 95, 103
section Bailout
This PR (8641) - mean (100ms) : 97, 103
master - mean (103ms) : 98, 108
section CallTarget+Inlining+NGEN
This PR (8641) - mean (825ms) : 787, 862
master - mean (822ms) : 788, 856
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (200ms) : 193, 208
master - mean (202ms) : 194, 210
section Bailout
This PR (8641) - mean (203ms) : 198, 208
master - mean (206ms) : 198, 213
section CallTarget+Inlining+NGEN
This PR (8641) - mean (1,193ms) : 1159, 1228
master - mean (1,205ms) : 1159, 1251
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (286ms) : 279, 293
master - mean (288ms) : 281, 295
section Bailout
This PR (8641) - mean (289ms) : 277, 300
master - mean (290ms) : 283, 296
section CallTarget+Inlining+NGEN
This PR (8641) - mean (962ms) : 938, 985
master - mean (967ms) : 941, 992
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (281ms) : 276, 285
master - mean (281ms) : 275, 287
section Bailout
This PR (8641) - mean (282ms) : 276, 288
master - mean (280ms) : 275, 285
section CallTarget+Inlining+NGEN
This PR (8641) - mean (1,155ms) : 1109, 1201
master - mean (1,163ms) : 1117, 1208
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8641) - mean (277ms) : 268, 286
master - mean (281ms) : 274, 289
section Bailout
This PR (8641) - mean (279ms) : 271, 287
master - mean (282ms) : 275, 288
section CallTarget+Inlining+NGEN
This PR (8641) - mean (1,037ms) : 992, 1082
master - mean (1,041ms) : 997, 1085
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmark execution time: 2026-05-14 18:11:55 Comparing candidate commit d43a6e5 in PR branch Some scenarios are present only in baseline or only in candidate runs. If you didn't create or remove some scenarios in your branch, this maybe a sign of crashed benchmarks 💥💥💥 Scenarios present only in baseline:
Found 4 performance improvements and 4 performance regressions! Performance is the same for 52 metrics, 12 unstable metrics, 89 known flaky benchmarks, 37 flaky benchmarks without significant changes.
|
Motivation
@key/@valuefor dictionary iteration but exposed a bypass that allowed reading values stored under redacted keys without applying the existing redaction rules.Description
TryGetCollectionIteratorPropertyto return anExpressionand wrapKey/Valueprojections with a conditional that returnsRedactedValue()when the entry key matches redaction rules intracer/src/Datadog.Trace/Debugger/Expressions/ProbeExpressionParser.Collection.cs.RedactDictionaryValueWhenKeyMatchesandShouldRedactDictionaryKeyto centralize the key redaction lookup and produce anExpression.Conditionfor the redaction decision.ProbeExpressionParser_DictionaryIteratorValue_RedactsSensitiveKeysintracer/test/Datadog.Trace.Tests/Debugger/DebuggerExpressionLanguageTests.csthat verifies a dictionary entry under the key"password"is surfaced as redacted when accessed through the iterator/filter/index/member path.Testing
ProbeExpressionParser_DictionaryIteratorValue_RedactsSensitiveKeysand executed focuseddotnet testruns against the test project with a filter for the new test (dotnet test tracer/test/Datadog.Trace.Tests/Datadog.Trace.Tests.csproj -f net10.0 --filter "ProbeExpressionParser_DictionaryIteratorValue_RedactsSensitiveKeys"), iterating until the parsing code produced the expected redaction behavior locally.Codex Task