Repository navigation
Fix NullReferenceException reporting file accesses for detoured nodes - #14602
Conversation
Scheduler.GetExecutingRequestByNode looked up the node's executing request twice, once through IsNodeWorking and again through the raw indexer. When a request leaves the Executing state the scheduler stores an explicit null against its node, so a caller that is not holding the BuildManager lock can see IsNodeWorking return true and then read that null, dereferencing it. FileAccessManager is that caller. Detoured node file accesses are reported on the thread draining the sandbox's report pipe, which races the scheduler freely, and the resulting NullReferenceException is unhandled on a threadpool thread, so it takes the whole build down. Look the request up once and let it be null. Callers already treat null as 'this node is not executing anything, so the access cannot be attributed to a request' and drop the access, which is the same outcome the race would have produced had it resolved a moment either side. Make the map concurrent as well, since one thread reading it while the scheduler adds newly seen nodes is otherwise undefined, and a plain Dictionary reallocates its buckets once a build has more nodes than the initial capacity. The remaining test-then-fetch reads of the same map are folded into single lookups so the map has no reads left that can throw.
There was a problem hiding this comment.
Pull request overview
Fixes a race in scheduler state lookup that could crash builds when /reportfileaccesses is enabled by making “executing request by node” retrieval tolerant of concurrent request completion, and adding regression coverage for the scenario.
Changes:
- Make
Scheduler.GetExecutingRequestByNodea single lookup and returnnullwhen no request is executing. - Replace
_executingRequestByNodestorage with aConcurrentDictionaryand update call sites to tolerate missing/cleared entries. - Add unit tests to validate both the steady-state contract and concurrent request completion tolerance.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| src/Build/BackEnd/Components/Scheduler/SchedulingData.cs | Switches executing-request map to ConcurrentDictionary and changes executing-request lookup to TryGetValue-based null-tolerant behavior. |
| src/Build/BackEnd/Components/Scheduler/Scheduler.cs | Removes check-then-fetch race; returns request?.BuildRequest and updates scheduler state dump to avoid double reads. |
| src/Build/BackEnd/Components/Scheduler/IScheduler.cs | Updates contract docs to allow null when a node isn’t executing a request. |
| src/Build.UnitTests/BackEnd/Scheduler_Tests.cs | Adds regression tests for null-tolerant and concurrent completion behavior. |
Suppressed comments (1)
src/Build.UnitTests/BackEnd/Scheduler_Tests.cs:779
- These test comments say completing a request "stores a null against the node". With this PR, _executingRequestByNode is a ConcurrentDictionary, which cannot store null values, so the implementation will need to clear the entry by removing the key (or using a sentinel). The comment should be updated to match the actual clearing mechanism to avoid misleading future readers.
{
// Cycle node 1 between executing a request and executing nothing. Completing a request stores a
// null against the node, which is the value the reader must not dereference.
int configId = DefaultConfigId + 1 + i;
|
/review |
|
✅ Expert Code Review (command) completed successfully! |
There was a problem hiding this comment.
Code Review: Fix NullReferenceException reporting file accesses for detoured nodes
This is a well-targeted fix for a real concurrency bug. The change is correct and the approach is sound.
✅ Correctness
The root cause is a classic TOCTOU race:
- Old code in
Scheduler.GetExecutingRequestByNode: calledIsNodeWorking(nodeId)(check), thenGetExecutingRequestByNode(nodeId).BuildRequest(use) — another thread could clear the executing request between these two calls, yielding a NRE. - New code: calls
GetExecutingRequestByNodeonce and usesrequest?.BuildRequest— eliminates the race.
The fix in SchedulingData.GetExecutingRequestByNode switching from _executingRequestByNode[nodeId] (throws KeyNotFoundException for unknown nodes) to TryGetValue is correct and necessary.
✅ ConcurrentDictionary with concurrencyLevel: 1
Using concurrencyLevel: 1 is well-justified: all writes come from the scheduler thread (protected by BuildManager lock) and reads from the file-access pipe drain thread. ConcurrentDictionary provides the necessary memory-visibility guarantees for cross-thread reads. This is the minimal-overhead correct solution.
✅ Backward Compatibility
GetExecutingRequestByNode is on IScheduler, an internal interface. Returning null instead of throwing was already the contract for the IsNodeWorking == false branch. The change broadens when null is returned (unknown nodes previously threw KeyNotFoundException from SchedulingData). All callers are internal and this is a bug fix path, so this is not a breaking change.
✅ IsNodeWorking Refactoring in WriteSummary
Calling GetExecutingRequestByNode once rather than IsNodeWorking + GetExecutingRequestByNode separately is a clean improvement that also eliminates a secondary TOCTOU in the summary writer.
✅ Test Quality
GetExecutingRequestByNodeReflectsTheNodesCurrentRequest: solid sequential state-machine test covering null-before-first-request and null-after-last-request states.GetExecutingRequestByNodeToleratesConcurrentRequestCompletion: good stress test with a spinning reader thread. ThesawExecutingRequest/sawIdleNodeguard assertions prevent the test from silently going vacuous — a nice defensive technique.
Minor Observation (non-blocking)
The IsNodeWorking method in SchedulingData (line 504) now reads from ConcurrentDictionary and its logic is equivalent to GetExecutingRequestByNode(nodeId) is not null. It could be simplified to delegate to GetExecutingRequestByNode in a follow-up for consistency, but this is not required.
Summary
The fix is minimal, correct, and well-tested. The ConcurrentDictionary change is the right tool. The new tests cover both sequential and concurrent scenarios. No blocking issues found.
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
awmgmcpg
To allow these domains, add them to the
network.allowedlist in your workflow frontmatter:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
Generated by Expert Code Review (command) for #14602 · sonnet46 · 42.4 AIC · ⌖ 5.13 AIC · ⊞ 4.7K
Comment /review to run again
|
@dfederm minor feedback from above:
@rainersigwald would you mind taking a quick look? I don't know anything about detoured nodes but the overall change looks correct to me. |
Updated [Azure.Containers.ContainerRegistry](https://github.com/Azure/azure-sdk-for-net) from 1.3.0 to 1.4.0. <details> <summary>Release notes</summary> _Sourced from [Azure.Containers.ContainerRegistry's releases](https://github.com/Azure/azure-sdk-for-net/releases)._ ## 1.4.0 ## 1.4.0 (2026-10-16) ### Bugs Fixed - Fixed streaming blob downloads to enforce the declared content length and disallow seeking, ensuring SHA-256 validation covers the complete sequential content stream. Commits viewable in [compare view](https://github.com/Azure/azure-sdk-for-net/commits/Azure.Containers.ContainerRegistry_1.4.0). </details> Updated [Azure.ResourceManager.Resources](https://github.com/Azure/azure-sdk-for-net) from 1.11.2 to 1.12.0. <details> <summary>Release notes</summary> _Sourced from [Azure.ResourceManager.Resources's releases](https://github.com/Azure/azure-sdk-for-net/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/Azure/azure-sdk-for-net/commits). </details> Updated [Google.Protobuf](https://github.com/protocolbuffers/protobuf) from 3.36.1 to 3.36.2. <details> <summary>Release notes</summary> _Sourced from [Google.Protobuf's releases](https://github.com/protocolbuffers/protobuf/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/protocolbuffers/protobuf/commits). </details> Updated [Grpc.AspNetCore.Server](https://github.com/grpc/grpc-dotnet) from 2.83.0 to 2.84.0. <details> <summary>Release notes</summary> _Sourced from [Grpc.AspNetCore.Server's releases](https://github.com/grpc/grpc-dotnet/releases)._ ## 2.84.0 ## What's Changed * Document complete release version updates by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2748 * Bump axios from 1.16.0 to 1.18.1 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2745 * Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749 * Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM by @pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756 * Update package dependencies and examples by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2759 * Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754 * Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755 * Bump ip-address from 10.2.0 to 10.5.0 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2757 * Stabilize unobserved exception retry test by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2758 * Fix corrupted bytes sent after GOAWAY by @DeagleGross in https://github.com/grpc/grpc-dotnet/pull/2766 * Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761 * Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765 * Bump joi from 17.13.4 to 17.13.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2764 * Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2763 * Bump browserslist from 4.25.1 to 4.28.8 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2762 * Bump @babel/core from 7.28.0 to 7.29.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2767 * Update the versions for pre release. by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2768 * Update version for 2.84.x-pre1 by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2769 * Remove pre suffix for 2.84.0 stable release by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2770 ## New Contributors * @pavelsavara made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2756 * @DeagleGross made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2766 **Full Changelog**: https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0 ## 2.84.0-pre1 ## What's Changed * Document complete release version updates by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2748 * Bump axios from 1.16.0 to 1.18.1 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2745 * Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749 * Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM by @pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756 * Update package dependencies and examples by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2759 * Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754 * Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755 * Bump ip-address from 10.2.0 to 10.5.0 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2757 * Stabilize unobserved exception retry test by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2758 * Fix corrupted bytes sent after GOAWAY by @DeagleGross in https://github.com/grpc/grpc-dotnet/pull/2766 * Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761 * Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765 * Bump joi from 17.13.4 to 17.13.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2764 * Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2763 * Bump browserslist from 4.25.1 to 4.28.8 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2762 * Bump @babel/core from 7.28.0 to 7.29.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2767 * Update the versions for pre release. by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2768 * Update version for 2.84.x-pre1 by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2769 ## New Contributors * @pavelsavara made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2756 * @DeagleGross made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2766 **Full Changelog**: https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0-pre1 Commits viewable in [compare view](https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0). </details> Updated [Grpc.AspNetCore.Server.Reflection](https://github.com/grpc/grpc-dotnet) from 2.83.0 to 2.84.0. <details> <summary>Release notes</summary> _Sourced from [Grpc.AspNetCore.Server.Reflection's releases](https://github.com/grpc/grpc-dotnet/releases)._ ## 2.84.0 ## What's Changed * Document complete release version updates by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2748 * Bump axios from 1.16.0 to 1.18.1 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2745 * Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749 * Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM by @pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756 * Update package dependencies and examples by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2759 * Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754 * Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755 * Bump ip-address from 10.2.0 to 10.5.0 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2757 * Stabilize unobserved exception retry test by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2758 * Fix corrupted bytes sent after GOAWAY by @DeagleGross in https://github.com/grpc/grpc-dotnet/pull/2766 * Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761 * Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765 * Bump joi from 17.13.4 to 17.13.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2764 * Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2763 * Bump browserslist from 4.25.1 to 4.28.8 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2762 * Bump @babel/core from 7.28.0 to 7.29.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2767 * Update the versions for pre release. by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2768 * Update version for 2.84.x-pre1 by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2769 * Remove pre suffix for 2.84.0 stable release by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2770 ## New Contributors * @pavelsavara made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2756 * @DeagleGross made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2766 **Full Changelog**: https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0 ## 2.84.0-pre1 ## What's Changed * Document complete release version updates by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2748 * Bump axios from 1.16.0 to 1.18.1 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2745 * Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749 * Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM by @pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756 * Update package dependencies and examples by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2759 * Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754 * Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755 * Bump ip-address from 10.2.0 to 10.5.0 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2757 * Stabilize unobserved exception retry test by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2758 * Fix corrupted bytes sent after GOAWAY by @DeagleGross in https://github.com/grpc/grpc-dotnet/pull/2766 * Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761 * Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765 * Bump joi from 17.13.4 to 17.13.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2764 * Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2763 * Bump browserslist from 4.25.1 to 4.28.8 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2762 * Bump @babel/core from 7.28.0 to 7.29.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2767 * Update the versions for pre release. by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2768 * Update version for 2.84.x-pre1 by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2769 ## New Contributors * @pavelsavara made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2756 * @DeagleGross made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2766 **Full Changelog**: https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0-pre1 Commits viewable in [compare view](https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0). </details> Updated [Grpc.Net.Client](https://github.com/grpc/grpc-dotnet) from 2.83.0 to 2.84.0. <details> <summary>Release notes</summary> _Sourced from [Grpc.Net.Client's releases](https://github.com/grpc/grpc-dotnet/releases)._ ## 2.84.0 ## What's Changed * Document complete release version updates by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2748 * Bump axios from 1.16.0 to 1.18.1 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2745 * Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749 * Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM by @pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756 * Update package dependencies and examples by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2759 * Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754 * Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755 * Bump ip-address from 10.2.0 to 10.5.0 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2757 * Stabilize unobserved exception retry test by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2758 * Fix corrupted bytes sent after GOAWAY by @DeagleGross in https://github.com/grpc/grpc-dotnet/pull/2766 * Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761 * Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765 * Bump joi from 17.13.4 to 17.13.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2764 * Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2763 * Bump browserslist from 4.25.1 to 4.28.8 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2762 * Bump @babel/core from 7.28.0 to 7.29.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2767 * Update the versions for pre release. by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2768 * Update version for 2.84.x-pre1 by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2769 * Remove pre suffix for 2.84.0 stable release by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2770 ## New Contributors * @pavelsavara made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2756 * @DeagleGross made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2766 **Full Changelog**: https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0 ## 2.84.0-pre1 ## What's Changed * Document complete release version updates by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2748 * Bump axios from 1.16.0 to 1.18.1 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2745 * Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749 * Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM by @pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756 * Update package dependencies and examples by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2759 * Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754 * Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755 * Bump ip-address from 10.2.0 to 10.5.0 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2757 * Stabilize unobserved exception retry test by @JamesNK in https://github.com/grpc/grpc-dotnet/pull/2758 * Fix corrupted bytes sent after GOAWAY by @DeagleGross in https://github.com/grpc/grpc-dotnet/pull/2766 * Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761 * Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765 * Bump joi from 17.13.4 to 17.13.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2764 * Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /examples/Browser/Server/wwwroot by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2763 * Bump browserslist from 4.25.1 to 4.28.8 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2762 * Bump @babel/core from 7.28.0 to 7.29.7 in /testassets/InteropTestsGrpcWebWebsite/Tests by @dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2767 * Update the versions for pre release. by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2768 * Update version for 2.84.x-pre1 by @asheshvidyut in https://github.com/grpc/grpc-dotnet/pull/2769 ## New Contributors * @pavelsavara made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2756 * @DeagleGross made their first contribution in https://github.com/grpc/grpc-dotnet/pull/2766 **Full Changelog**: https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0-pre1 Commits viewable in [compare view](https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0). </details> Updated [Grpc.Tools](https://github.com/grpc/grpc) from 2.83.0 to 2.84.0. <details> <summary>Release notes</summary> _Sourced from [Grpc.Tools's releases](https://github.com/grpc/grpc/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/grpc/grpc/commits). </details> Updated [Markdig](https://github.com/xoofx/markdig) from 1.3.2 to 1.5.0. <details> <summary>Release notes</summary> _Sourced from [Markdig's releases](https://github.com/xoofx/markdig/releases)._ ## 1.5.0 # Changes ## 🐛 Bug Fixes - Keep Unicode whitespace other than spaces and tabs when trimming paragraphs, headings and info strings (PR #966) by @HuzaifaChaudary - Add relative file links extension (#897) (PR #968) by @StefanGreve - Don't treat an escaped backslash as the start of another escape in HtmlHelper.Unescape (PR #967) by @HuzaifaChaudary - Fix unescaped source URL in media links (PR #969) by @StefanGreve **Full Changelog**: [1.4.2...1.5.0](https://github.com/xoofx/markdig/compare/1.4.2...1.5.0) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 1.4.2 # Changes ## ✨ New Features - Add IsAotCompatible for net8.0 and later targets (PR #963) by @StefanGreve ## 🐛 Bug Fixes - Fix setext heading line breaks and indented lazy quote lines (PR #964) by @wahidrizka - Fix setext underlines in block quotes and list items (PR #965) by @wahidrizka - Fix FindClosestBlock/FindBlockAtPosition with definition groups (#677) (PR #962) by @ybai08 **Full Changelog**: [1.4.1...1.4.2](https://github.com/xoofx/markdig/compare/1.4.1...1.4.2) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 1.4.1 # Changes ## 🐛 Bug Fixes - Fix definition list continuation consuming leading markers (PR #957) by @SparkUiX - Fix grid table open last cell taking a | from the next line (#494) (PR #958) by @dualfroz - Fix HTML blocks not ending at a line with only spaces or tabs (PR #960) by @wahidrizka - Fix empty list items being parsed as text after a paragraph (PR #961) by @wahidrizka - Fix definition lists requiring 3 spaces after the marker (PR #959) by @dualfroz - Fix CommonMark HTML block start character classes (d5462ae5) - Fix CommonMark closing-tag block starts and whitespace (05e638f9) - Fix empty list items with trailing marker whitespace (2fec2085) - Fix CommonMark inline HTML declarations (d33c703d) - Fix definition paragraphs inside tight lists (a998839f) - Fix concurrent spec generation in parallel builds (ccb9d859) ## 📚 Documentation - Update doc for definition-list continuation rules (b58e83b4) **Full Changelog**: [1.4.0...1.4.1](https://github.com/xoofx/markdig/compare/1.4.0...1.4.1) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 1.4.0 # Changes ## ✨ New Features - Add strict GFM pipe table parsing mode (14cd25c7) ## 🐛 Bug Fixes - Fix heading auto-link hijacking nested link labels (#668) (PR #949) by @dualfroz - Fix: keep trailing content out of an unmatched emphasis closer (#743) (PR #950) by @dualfroz - Fix indent on first list item (#482) (PR #953) by @boxofyellow - Add Normalization Support for PipeTables (GFM) (PR #954) by @boxofyellow - Fix partially empty pipe table separator regression (PR #955) by @vicancy - Reject emoji-parsing if the slice ends with `**` (PR #947) by @bstordrup - Fix strict GFM tables against native cmark-gfm (86866b91) ## 🚀 Enhancements - Update 3rd party extensions (PR #945) by @Kryptos-FR ## 🏭 Tests - Fix tests warnings (96b024c2) ## 📦 Dependencies - Bump deps (c6b186b4) ## 🧰 Misc - Use NuGet Trusted Publishing via dotnet-releaser (56e9c238) **Full Changelog**: [1.3.2...1.4.0](https://github.com/xoofx/markdig/compare/1.3.2...1.4.0) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> Commits viewable in [compare view](https://github.com/xoofx/markdig/compare/1.3.2...1.5.0). </details> Updated [Microsoft.Build.Framework](https://github.com/dotnet/msbuild) from 18.10.1 to 18.11.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Build.Framework's releases](https://github.com/dotnet/msbuild/releases)._ ## 18.11.0 ## What's Changed * Add vs18.10 to merge-flow config; retire vs18.7 by @AlesProkop in https://github.com/dotnet/msbuild/pull/14563 * Bump main to 18.11.0 after vs18.10 snap by @AlesProkop in https://github.com/dotnet/msbuild/pull/14564 * Phase out ChangeWaves 17.10, 17.12, 17.14 and 18.3 by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14551 * [main] Source code updates from dotnet/dotnet by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14572 * Default XML tasks to prohibit DTDs and improve DTD error diagnostics by @VolPlita in https://github.com/dotnet/msbuild/pull/14285 * Don't log TaskAssemblyLocationMismatch for task-host-routed tasks by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14550 * Scope MSBuild server and coordinator resource names to the current user by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14543 * Promote MSBuild server out of Experimental namespace (#12099) by @JanProvaznik in https://github.com/dotnet/msbuild/pull/13964 * Fix builds by adding missing using by @rainersigwald in https://github.com/dotnet/msbuild/pull/14587 * Add event-level task telemetry (build/tasks/details) by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13609 * Migrate ResolveCodeAnalysisRuleSet to multithreaded execution by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13636 * Use <inheritdoc /> for TaskEnvironment in ResolveCodeAnalysisRuleSet by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/14589 * Add aliases for configuration and test parameters in build scripts by @AR-May in https://github.com/dotnet/msbuild/pull/14591 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14617 * Emit assemblyName payload for FallbackAssemblyLoad EventSource events by @AR-May in https://github.com/dotnet/msbuild/pull/14014 * Bump github/gh-aw-actions/setup-cli from 0.83.3 to 0.84.1 by @dependabot[bot] in https://github.com/dotnet/msbuild/pull/14611 * Bump github/gh-aw-actions/setup from 0.83.3 to 0.84.1 by @dependabot[bot] in https://github.com/dotnet/msbuild/pull/14610 * Migrate GetAssembliesMetadata to multithreaded execution by @jankratochvilcz in https://github.com/dotnet/msbuild/pull/13637 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14619 * Fix concurrent BuildCheck callback mutation by @YuliiaKovalova in https://github.com/dotnet/msbuild/pull/14590 * [main] Update dependencies from nuget/nuget.client by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14612 * Make experimental VS insertion reviewers configurable by @rainersigwald in https://github.com/dotnet/msbuild/pull/14632 * Fix NullReferenceException reporting file accesses for detoured nodes by @dfederm in https://github.com/dotnet/msbuild/pull/14602 * Scope .NET TaskHost handshake leniency to architecture by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14579 * Ensure MSBuild.csproj is included for Release|ARM64 by @KirillOsenkov in https://github.com/dotnet/msbuild/pull/14622 * Declare the Sdk element in Microsoft.Build.Core.xsd by @ViktorHofer with @Copilot in https://github.com/dotnet/msbuild/pull/14637 * Call out MSBUILD_LOGGING_ARGS by @rainersigwald in https://github.com/dotnet/msbuild/pull/14641 * [Spec] Define MSBuild server child-process ownership by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14508 * Pre-buffer TaskHost packet bodies before deserialization by @AR-May in https://github.com/dotnet/msbuild/pull/14505 * Expose item glob patterns via MSBuildProvideItemGlobs by @drewnoakes in https://github.com/dotnet/msbuild/pull/14389 * Avoid republishing coverage artifacts on CI retries by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14423 * Make the resolved change wave part of the node handshake by @JanProvaznik with @Copilot in https://github.com/dotnet/msbuild/pull/14557 * Bump github/gh-aw-actions/setup from 0.84.1 to 0.86.1 by @dependabot[bot] in https://github.com/dotnet/msbuild/pull/14665 * Bump github/gh-aw-actions/setup-cli from 0.84.1 to 0.86.1 by @dependabot[bot] in https://github.com/dotnet/msbuild/pull/14664 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14672 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14677 * Give each transient MSBuild Server its own identity by @JanProvaznik in https://github.com/dotnet/msbuild/pull/14647 * Don't discard the XML cache after restore when it reloads from disk by @ViktorHofer in https://github.com/dotnet/msbuild/pull/14558 * Add TarDirectory and Untar tasks for creating and extracting tar archives by @ViktorHofer with @Copilot in https://github.com/dotnet/msbuild/pull/14451 * Add Directory.Parse.config to skip unknown attributes/elements during parsing by @benwitmanmsft in https://github.com/dotnet/msbuild/pull/14588 * Revert branch freeze PowerShell automation by @AlesProkop in https://github.com/dotnet/msbuild/pull/14692 * Fix MT switch by @AR-May in https://github.com/dotnet/msbuild/pull/14682 * Document multi-request target crosstalk by @rainersigwald in https://github.com/dotnet/msbuild/pull/14403 * [main] Source code updates from dotnet/dotnet by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14698 * Keep project active through post-build telemetry by @AR-May in https://github.com/dotnet/msbuild/pull/14679 * Make eng/build.sh portable (don't hardcode /bin/bash) by @ViktorHofer in https://github.com/dotnet/msbuild/pull/14707 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14709 * Drop stale secret group by @rainersigwald in https://github.com/dotnet/msbuild/pull/14710 * [main] Update dependencies from dotnet/roslyn by @dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14713 ... (truncated) Commits viewable in [compare view](https://github.com/dotnet/msbuild/compare/v18.10.1...v18.11.0). </details> Updated Microsoft.Build.Utilities.Core from 18.10.1 to 18.11.0. Updated [Microsoft.Extensions.Configuration](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Configuration's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Configuration.Binder](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Configuration.Binder's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Configuration.Json](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Configuration.Json's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.DependencyInjection.Abstractions's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.FileSystemGlobbing's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.Extensions.Logging](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Logging's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.NET.Sdk.WebAssembly.Pack](https://github.com/dotnet/dotnet) from 10.0.12 to 10.0.14. <details> <summary>Release notes</summary> _Sourced from [Microsoft.NET.Sdk.WebAssembly.Pack's releases](https://github.com/dotnet/dotnet/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits). </details> Updated [Microsoft.SourceLink.GitHub](https://github.com/dotnet/dotnet) from 10.0.401 to 10.0.403. <details> <summary>Release notes</summary> _Sourced from [Microsoft.SourceLink.GitHub's releases](https://github.com/dotnet/dotnet/releases)._ ## 10.0.403 You can build .NET 10.0 from the repository by cloning the release tag `v10.0.403` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.403/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.403/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 ## 10.0.402 You can build .NET 10.0 from the repository by cloning the release tag `v10.0.402` and following the build instructions in the [main README.md](https://github.com/dotnet/dotnet/blob/v10.0.402/README.md#building). Alternatively, you can build from the sources attached to this release directly. More information on this process can be found in the [dotnet/dotnet repository](https://github.com/dotnet/dotnet/blob/v10.0.402/README.md#building-from-released-sources). Attached are PGP signatures for the GitHub generated tarball and zipball. You can find the public key at https://dot.net/release-key-2023 Commits viewable in [compare view](https://github.com/dotnet/dotnet/compare/v10.0.401...v10.0.403). </details> Updated [Microsoft.VisualStudio.Threading](https://github.com/microsoft/vs-threading) from 18.7.23 to 18.12.1. <details> <summary>Release notes</summary> _Sourced from [Microsoft.VisualStudio.Threading's releases](https://github.com/microsoft/vs-threading/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/microsoft/vs-threading/commits). </details> Updated [Microsoft.VisualStudio.Threading.Analyzers](https://github.com/microsoft/vs-threading) from 18.7.23 to 18.12.1. <details> <summary>Release notes</summary> _Sourced from [Microsoft.VisualStudio.Threading.Analyzers's releases](https://github.com/microsoft/vs-threading/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/microsoft/vs-threading/commits). </details> Updated [ModelContextProtocol](https://github.com/modelcontextprotocol/csharp-sdk) from 2.2.0 to 2.3.0. <details> <summary>Release notes</summary> _Sourced from [ModelContextProtocol's releases](https://github.com/modelcontextprotocol/csharp-sdk/releases)._ ## 2.3.0 This release improves HTTP discovery, OAuth, protocol interoperability, and shutdown reliability, preserves registration order for server primitives, and exposes a `TimeProvider` for deterministic client timeout tests. It also corrects optional server-identity handling; applications reading `McpClient.ServerInfo` should adopt nullable handling. ## Breaking Changes Refer to the [C# SDK Versioning](https://csharp.sdk.modelcontextprotocol.io/v2/versioning.html) documentation for details on versioning and breaking change policies. 1. **`McpClient.ServerInfo` is nullable — #1903** * Its return annotation changes from `Implementation` to `Implementation?`. Existing non-nullable assignments or dereferences can produce nullable warnings and fail warnings-as-errors builds. * On `2026-07-28` connections, `ServerInfo` is `null` when the server omits optional identity metadata from `server/discover`. Legacy `initialize` still requires `serverInfo`. Reading the property before connecting still throws `InvalidOperationException`. * Migrate with a null check or a fallback such as `client.ServerInfo?.Name ?? "Unknown server"`. Self-reported identity must not be used for security decisions. * This corrective source-compatibility change is intentionally included in 2.3.0. ## What's Changed * Correct protocol-version telemetry for stateless server spans #1810 by @luisangelrod * Preserve HTTP errors and correct discovery fallback handling #1791 by @PranavSenthilnathan (co-authored by @Copilot) * Make modern Streamable HTTP status mapping deterministic #1837 by @jstar0 * Modern responses wait for the first protocol message before sending headers; long-running silent handlers may need progress output or an appropriate HTTP timeout. Legacy eager-header behavior is preserved. * Accept opaque legacy metadata and correct request-scoped capabilities and discovery advertisement #1852 by @halter73 (co-authored by @Copilot) * Avoid redundant SSE fallback after discovery is rejected with 400 or 404 #1855 by @scottt732 * Close server stdin before waiting for graceful stdio process exit #1838 by @luisangelrod * Preserve insertion order when listing server tools, prompts, and resources #1924 by @PederHP (co-authored by Claude Opus 5.5) * Allow missing optional server identity in discovery and make `ServerInfo` nullable #1903 by @Coding-Professional * Include JSON parse details in Streamable HTTP 400 responses #1844 by @ump45nose * Exclude OAuth from `DiscoverProbeTimeout`, expose `McpClientOptions.TimeProvider` for deterministic timeout tests, and default SSE to legacy initialization #1719 by @halter73 (co-authored by @Copilot) * OAuth remains subject to the overall `InitializationTimeout` and caller cancellation; it is excluded only from the short discovery-probe budget. * Modern discovery over SSE requires both explicit `HttpTransportMode.Sse` and `ProtocolVersion = "2026-07-28"`; pinning the version with `AutoDetect` is not equivalent. * Preserve numeric progress tokens in `RequestOptions` serialization #1832 by @dfedoryshchev * Dispose legacy SSE POST responses to release connections deterministically #1841 by @yalcinfu22 (co-authored by Claude Fable 5) ## Documentation Updates * Document standing support for new MCP specification revisions #1826 by @halter73 (co-authored by @Copilot) ## Test Improvements * Stabilize discovery-capable test connections while retaining initialization deadlines #1943 by @tarekgh ## Repository Infrastructure Updates * Add a source selector for manual documentation publishes #1828 by @jeffhandley (co-authored by @Copilot) * Update SourceLink's private build dependency to resolve a vulnerable Git dependency #1873 by @halter73 (co-authored by @Copilot) * Correct obsolete `McpServerFactory` references in Copilot instructions #1892 by @Zir0-93 * Update Microsoft.Extensions.AI and AI.Abstractions to 10.11.0 and align shared System dependencies to 10.0.13 #1940 ## Acknowledgements * @scottt732 made their first contribution in #1855 * @Zir0-93 made their first contribution in #1892 * @Coding-Professional made their first contribution in #1903 ... (truncated) Commits viewable in [compare view](https://github.com/modelcontextprotocol/csharp-sdk/compare/v2.2.0...v2.3.0). </details> Updated [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 13.0.3 to 13.0.4. <details> <summary>Release notes</summary> _Sourced from [Newtonsoft.Json's releases](https://github.com/JamesNK/Newtonsoft.Json/releases)._ ## 13.0.4 * New feature - Annotated for trim/AOT (in)compatibility * New feature - Added support for using Index with JArray * Change - Avoid LINQ expression trees in .NET 6+ reflection * Fix - Fixed handling of empty constructor names * Fix - Fixed XML convert duplicate attribute error on nested arrays with writeArrayAttribute set to true * Fix - Fixed XML convert array attribute is not set for properties with special characters * Fix - Fixed TimeOnly deserialization to support more formats Commits viewable in [compare view](https://github.com/JamesNK/Newtonsoft.Json/compare/13.0.3...13.0.4). </details> Updated [Newtonsoft.Json.Schema](https://github.com/JamesNK/Newtonsoft.Json.Schema) from 4.0.1 to 4.0.2. <details> <summary>Release notes</summary> _Sourced from [Newtonsoft.Json.Schema's releases](https://github.com/JamesNK/Newtonsoft.Json.Schema/releases)._ ## 4.0.2 * Fix - Fix unevaluated properties with if/then/else * Fix - Fix validation errors with circular references in child errors * Fix - Only validate unevaluated scopes when required by the schema Commits viewable in [compare view](https://github.com/JamesNK/Newtonsoft.Json.Schema/compare/4.0.1...4.0.2). </details> Updated [OmniSharp.Extensions.LanguageClient](https://github.com/OmniSharp/csharp-language-server-protocol) from 0.19.9 to 0.19.11. <details> <summary>Release notes</summary> _Sourced from [OmniSharp.Extensions.LanguageClient's releases](https://github.com/OmniSharp/csharp-language-server-protocol/releases)._ ## 0.19.11 ## What's Changed * Revert "Update to Mediatr 14" by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1831 * Fix NuGet package version calculation by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1835 * Publish NuGet packages from a single build by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1836 **Full Changelog**: https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.10...v0.19.11 ## 0.19.10 ## What's Changed * Update verify (major) by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1030 * Update dotnet monorepo by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1031 * Update dependency Microsoft.CodeAnalysis.CSharp.Workspaces to v4.7.0 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1038 * Update dependency Serilog.Extensions.Logging to v7 by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1040 * Update dependency typescript to v5 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1042 * Update dependency vscode to v1.82.0 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1043 * Update dependency glob to v10 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1047 * Regenerate ci github workflows from Nuke build by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1048 * Add npm to CI build by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1049 * Update verify by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1057 * Use new WorkingDirectory property for RunStep by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1061 * Fix NotebookSelector type by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1077 * Use new HeadlessRunStep by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1074 * Don't log critical message when client disconnect by @ycholette in https://github.com/OmniSharp/csharp-language-server-protocol/pull/955 * Update Mediatr to 9.0.0 by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1084 * Add ICapability to ShowMessageRequestClientCapabilities. Fixes #1117 by @chrissimon-au in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118 * Fix github actions badge by @sh-cho in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171 * Support net8.0 TFM by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1242 * Bump braces from 3.0.2 to 3.0.3 in /vscode-testextension by @dependabot[bot] in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1254 * Update Verify.Xunit to v25 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1268 * Fix RenameFiles workspace operations by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1079 * Use .NET SDK 9.0 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1396 * Upgrade MediatR version to 12.4.1 by @sheffer21 in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439 * Fix ci publish by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1441 * Update GH Action tool versions by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1446 * Fix FluentAssertions after major update by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1442 * Fix serilog update by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1443 * Fix verify update by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1444 * Update dotnet tools by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1466 * Implement 3.18 features by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1776 ## New Contributors * @chrissimon-au made their first contribution in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118 * @sh-cho made their first contribution in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171 * @sheffer21 made their first contribution in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439 **Full Changelog**: https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.10 Commits viewable in [compare view](https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.11). </details> Updated [OmniSharp.Extensions.LanguageServer](https://github.com/OmniSharp/csharp-language-server-protocol) from 0.19.9 to 0.19.11. <details> <summary>Release notes</summary> _Sourced from [OmniSharp.Extensions.LanguageServer's releases](https://github.com/OmniSharp/csharp-language-server-protocol/releases)._ ## 0.19.11 ## What's Changed * Revert "Update to Mediatr 14" by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1831 * Fix NuGet package version calculation by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1835 * Publish NuGet packages from a single build by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1836 **Full Changelog**: https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.10...v0.19.11 ## 0.19.10 ## What's Changed * Update verify (major) by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1030 * Update dotnet monorepo by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1031 * Update dependency Microsoft.CodeAnalysis.CSharp.Workspaces to v4.7.0 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1038 * Update dependency Serilog.Extensions.Logging to v7 by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1040 * Update dependency typescript to v5 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1042 * Update dependency vscode to v1.82.0 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1043 * Update dependency glob to v10 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1047 * Regenerate ci github workflows from Nuke build by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1048 * Add npm to CI build by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1049 * Update verify by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1057 * Use new WorkingDirectory property for RunStep by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1061 * Fix NotebookSelector type by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1077 * Use new HeadlessRunStep by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1074 * Don't log critical message when client disconnect by @ycholette in https://github.com/OmniSharp/csharp-language-server-protocol/pull/955 * Update Mediatr to 9.0.0 by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1084 * Add ICapability to ShowMessageRequestClientCapabilities. Fixes #1117 by @chrissimon-au in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118 * Fix github actions badge by @sh-cho in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171 * Support net8.0 TFM by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1242 * Bump braces from 3.0.2 to 3.0.3 in /vscode-testextension by @dependabot[bot] in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1254 * Update Verify.Xunit to v25 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1268 * Fix RenameFiles workspace operations by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1079 * Use .NET SDK 9.0 by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1396 * Upgrade MediatR version to 12.4.1 by @sheffer21 in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439 * Fix ci publish by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1441 * Update GH Action tool versions by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1446 * Fix FluentAssertions after major update by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1442 * Fix serilog update by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1443 * Fix verify update by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1444 * Update dotnet tools by @manandre in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1466 * Implement 3.18 features by @JoeRobich in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1776 ## New Contributors * @chrissimon-au made their first contribution in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118 * @sh-cho made their first contribution in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171 * @sheffer21 made their first contribution in https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439 **Full Changelog**: https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.10 Commits viewable in [compare view](https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.11). </details> Updated [Sarif.Sdk](https://github.com/Microsoft/sarif-sdk) from 5.7.0 to 5.8.0. <details> <summary>Release notes</summary> _Sourced from [Sarif.Sdk's releases](https://github.com/Microsoft/sarif-sdk/releases)._ ## 5.8.0 ## **v5.8.0** [Sdk](https://www.nuget.org/packages/Sarif.Sdk/v5.8.0) | [Driver](https://www.nuget.org/packages/Sarif.Driver/v5.8.0) | [Converters](https://www.nuget.org/packages/Sarif.Converters/v5.8.0) | [Multitool](https://www.nuget.org/packages/Sarif.Multitool/v5.8.0) | [Multitool Library](https://www.nuget.org/packages/Sarif.Multitool.Library/v5.8.0) * NEW: `GHAzDO1021.ProvideValidVersionControlProvenance` rejects a blank primary branch or revision and the 40-character all-zero Git revision sentinel. * BUG: `MultithreadedAnalyzeCommandBase.Run` and `RunAsync` return on timeout without disposing resources still used by unfinished analysis. * BUG: `HashUtilities.ComputeHashes` omits hashes for unsupported file paths so scan-exception notifications can be logged. * BUG: `SarifLogger` emits hashes supplied by base-less in-memory scan targets without reading a same-named file from the working directory. * BUG: `SarifLogger` resolves `uriBaseId` before hashing result artifacts and omits hashes when their relative locations cannot be resolved. * BUG: `analyze --post-uri` reports the endpoint health-check status and response body or exception when validation fails. Commits viewable in [compare view](https://github.com/Microsoft/sarif-sdk/commits/v5.8.0). </details> Updated [Scriban](https://github.com/scriban/scriban) from 7.4.0 to 7.5.3. <details> <summary>Release notes</summary> _Sourced from [Scriban's releases](https://github.com/scriban/scriban/releases)._ ## 7.5.3 # Changes ## 🧰 Misc - Bound stack depth and CPU of postfix chains, array compare, big integers (6b9c69bf) - Guard string-producing builtins with LimitToString (GHSA-95w2-9mjq-6c74) (466aeb2f) **Full Changelog**: [7.5.2...7.5.3](https://github.com/scriban/scriban/compare/7.5.2...7.5.3) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 7.5.2 # Changes ## 🧰 Misc - Make function values opaque to template member access (7f481f46) **Full Changelog**: [7.5.1...7.5.2](https://github.com/scriban/scriban/compare/7.5.1...7.5.2) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 7.5.1 # Changes ## 🧰 Misc - Support subtracting a timespan from a date (PR #691) by @tahakocal **Full Changelog**: [7.5.0...7.5.1](https://github.com/scriban/scriban/compare/7.5.0...7.5.1) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 7.5.0 # Changes ## 🐛 Bug Fixes - Fix TestUtcDateNow comparing utc_now against local time (PR #684) by @tahakocal - Fix string.truncatewords ignoring its ellipsis argument (PR #687) by @tahakocal - Fix date.parse not matching full month names with %B (PR #686) by @tahakocal - Fix date.parse_to_string formatting output with the parse pattern converter (PR #688) by @tahakocal - Fix date.parse with %x and %X combined with other specifiers (PR #690) by @tahakocal - Fix array.sort failing on numbers of different types (PR #689) by @tahakocal ## 🧰 Misc - Decouple output and string limits without breaking defaults (#683) (e4e1f076) - Make date parsing documentation timezone-independent (#685) (7da8681a) **Full Changelog**: [7.4.0...7.5.0](https://github.com/scriban/scriban/compare/7.4.0...7.5.0) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> Commits viewable in [compare view](https://github.com/scriban/scriban/compare/7.4.0...7.5.3). </details> Updated [SharpYaml](https://github.com/xoofx/SharpYaml) from 3.13.1 to 3.16.0. <details> <summary>Release notes</summary> _Sourced from [SharpYaml's releases](https://github.com/xoofx/SharpYaml/releases)._ ## 3.16.0 # Changes ## ✨ New Features - Add YamlWriter.WriteScalar(value, ScalarStyle) and a global multiline string style option (PR #169) by @Mpdreamz ## 🧰 Misc - Accept the non-specific tag '!' in the scanner (PR #171) by @Shaisolaris - Match converters registered for T against lookups for T? (Nullable<T>) (PR #170) by @Mpdreamz **Full Changelog**: [3.15.0...3.16.0](https://github.com/xoofx/SharpYaml/compare/3.15.0...3.16.0) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 3.15.0 # Changes ## ✨ New Features - Add global unmapped member callback and finalizer (PR #165) by @Mpdreamz ## 🧰 Misc - Exempt polymorphic discriminator from unmapped member Disallow (92525a20) **Full Changelog**: [3.14.0...3.15.0](https://github.com/xoofx/SharpYaml/compare/3.14.0...3.15.0) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> ## 3.14.0 # Changes ## ✨ New Features - Add trivia-preserving syntax text edits (#163) (b8debcdb) ## 🐛 Bug Fixes - Fix ambiguous string member serialization in generated contexts (PR #160) by @HoMiyabi ## 🧰 Misc - Update links for serialization and low-level APIs (PR #161) by @mpoettgen - Clarify merge-key and reference preservation semantics (#155) (7648ddb8) - Use generated readers when populating mutable sequences (#157) (d20a18ce) **Full Changelog**: [3.13.1...3.14.0](https://github.com/xoofx/SharpYaml/compare/3.13.1...3.14.0) <sub>Published with [dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub> Commits viewable in [compare view](https://github.com/xoofx/SharpYaml/compare/3.13.1...3.16.0). </details> Updated [StreamJsonRpc](https://github.com/microsoft/vs-streamjsonrpc) from 2.20.20 to 2.26.150. <details> <summary>Release notes</summary> _Sourced from [StreamJsonRpc's releases](https://github.com/microsoft/vs-streamjsonrpc/releases)._ ## 2.26.150 ## Fixes * Fix JSON-RPC 1.0 compliance. #1522 [@AArnott](https://github.com/AArnott) * Accept null JSON-RPC params consistently. #1506 [@AArnott](https://github.com/AArnott) * Preserve exception details across RPC hops. #1518 [@AArnott](https://github.com/AArnott) * Fix typeless async enumerable serialization. #1521 [@AArnott](https://github.com/AArnott) * Fix NativeAOT proxy accessibility and interceptor fallback. #1472 [@AArnott](https://github.com/AArnott) * Avoid repeating async enumerator creation failures. #1520 [@AArnott](https://github.com/AArnott) * Propagate async enumerable cancellation between reads. #1525 [@AArnott](https://github.com/AArnott) * Avoid retaining returned PipeReader channels. #1528 [@AArnott](https://github.com/AArnott) * Ignore disposal methods in RPC ambiguity checks. #1532 [@AArnott](https://github.com/AArnott) * Fix the out-of-band streams documentation title. #1553 [@AArnott](https://github.com/AArnott) * RPC proxies now reject by-reference parameters. #1507 [@AArnott](https://github.com/AArnott) ## Enhancements * Add outbound request timeouts. #1471 [@AArnott](https://github.com/AArnott) * Add parameter-name customization for JSON-RPC. #1473 [@AArnott](https://github.com/AArnott) * Implement async disposal on client proxies. #1523 [@AArnott](https://github.com/AArnott) * Support async enumerable structs in NativeAOT. #1509 [@AArnott](https://github.com/AArnott) * Add an analyzer for ambiguous RPC method overloads. #1510 [@AArnott](https://github.com/AArnott) * Add flexible named-argument matching. #1540 [@AArnott](https://github.com/AArnott) * Add `JsonRpcEventAttribute` for event renaming. #1519 [@AArnott](https://github.com/AArnott) * Support W3C `traceparent` string serialization in MessagePack formatters. #1445 [@AArnott](https://github.com/AArnott) * Add the `MessagePackFormatter.InternStrings` property. #1446 [@AArnott](https://github.com/AArnott) * Reduce per-call allocations across formatters. #1559 [@AArnott](https://github.com/AArnott) * Optimize the WebSocket receive path on pre-netstandard2.1 targets. #1462 [@AArnott](https://github.com/AArnott) [@Copilot](https://github.com/Copilot) * Reuse Newtonsoft.Json contracts across formatters. #1527 [@AArnott](https://github.com/AArnott) * Defer reflection for cancellation overloads. #1544 [@AArnott](https://github.com/AArnott) * Prefer cancellable RPC overloads. #1531 [@AArnott](https://github.com/AArnott) * Make `RequestIdSTJsonConverter` public for source generation. #1557 [@eerhardt](https://github.com/eerhardt) * Add a working F# RPC sample. #1508 [@AArnott](https://github.com/AArnott) * Document multiple client proxy patterns. #1470 [@AArnott](https://github.com/AArnott) * Document exotic-type wire formats and marshaled method names. #1554 [@AArnott](https://github.com/AArnott) ## Dependency updates * Update MessagePack-CSharp to 2.5.307. #1571 [@renovate](https://github.com/renovate)[bot] * Update Nerdbank.MessagePack to 1.3.88. #1561 [@renovate](https://github.com/renovate)[bot] * Update Newtonsoft.Json to 13.0.4. #1495 [@renovate](https://github.com/renovate)[bot] **Full Changelog**: https://github.com/microsoft/vs-streamjsonrpc/compare/v2.25.29...v2.26.150 ## 2.25.29 ## Changes: * #1463: Compile analyzers to support .NET 8 SDK ## Fixes * #1399: Analyzer in 2.24.84 requires Roslyn 4.14.0, incompatible with .NET 8 SDK This list of changes was [auto generated](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14379625&view=logs). ## 2.25.28 ## Changes: * #1459: Bump MessagePack to 2.5.302 This list of changes was [auto generated](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14362774&view=logs). ## 2.25.25 ## Changes: ### Enhancements: * #1395: Add `JsonRpc.DisplayName` property * #1404: Move ApplyInboundActivity earlier so dispatch traces have activity IDs ### Fixes * #1420: Avoid RpcMarshalable source-gen local name collisions with method parameters * #1439: Improve docs around using `NerdbankMessagePackFormatter` * #1432: Update documentation link for RpcMarshalableAttribute ### Others: * #1438: Bump Nerdbank.MessagePack to 1.2.4 * #1389: Bump Microsoft.AspNetCore packages * #1394: Update dependency Microsoft.Bcl.AsyncInterfaces to v10 This list of changes was [auto generated](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14260213&view=logs).</details> ## 2.24.92 ## What's Changed * Bump Nerdbank.MessagePack to 1.1.62 by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1430 **Full Changelog**: https://github.com/microsoft/vs-streamjsonrpc/compare/v2.24.84...v2.24.92 ## 2.24.84 # What's Changed ## Features * Add source generation of proxies by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1223 * Add NerdbankMessagePackFormatter by @trippwill in https://github.com/microsoft/vs-streamjsonrpc/pull/1100 * Enable RPC marshalable objects in `NerdbankMessagePackFormatter` by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1260 * Source generate proxies for RpcMarshalable interfaces by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1246 * Add `RpcTargetMetadata` generation from `ITypeShape` by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1251 * Create a NativeAOT-compatible JsonRpc.AddLocalTargetObject method by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1236 * Use PolyType shapes for events by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1297 * Add `PolyTypeJsonFormatter` as an experimental API by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1344 * Add `RpcTargetMetadata.FromShape<T>` overloads that work on .NET Framework by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1358 * Expose MessageFormatterEnumerableTracker.EnumeratorResults as public by @eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1206 ## Fixes * Remove Dependency on Newtonsoft.Json from JsonRpc by @eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1201 * Remove Dependency on Newtonsoft.Json From Protocol objects by @eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1198 * Cut ProxyGeneration out if dynamic code isn't supported by @eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1202 * Add attributes for NativeAOT safety by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1196 * Refactor code and annotations to fix all warnings in NativeAOTCompatibility. by @eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1207 * Reduce trimming demands for RPC target objects by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1233 * Improve performance of `WebSocketMessageHandler` by @AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1237 * Cap the amount of text copied into the stringbuilder in JsonRpcEventSource.Format by @ToddGrun in https://github.com/microsoft/vs-streamjsonrpc/pull/1187 * Use JsonElement.Clone instead of Deserialize by @eerhardt in https://github.com/…
Scheduler.GetExecutingRequestByNoderead the node's executing request twice:When a request leaves the
Executingstate the scheduler stores an explicitnullagainst its node (SchedulingData.cs:315), so those two reads can disagree. Every other caller of the scheduler holds theBuildManagerlock;FileAccessManagerdoes not. With/reportfileaccesses, file accesses are reported on the thread draining the sandbox's report pipe, which races the scheduler freely, and the resultingNullReferenceExceptionis unhandled on a threadpool thread, so it takes the whole build down. Reported as microsoft/MSBuildCache#160.The fix looks the request up once and lets it be null.
FileAccessManager.ReportFileAccessandReportProcessalready guard withif (buildRequest != null)and drop the access when the node has no executing request, which is the documented expectation there ("If the node isn't executing anything it may be accessing binaries required to run"). So the only behavior change is crash-to-drop, and that drop is the same outcome the race would have produced had it resolved a moment either side. Nothing is dropped that wasn't already. The other two test-then-fetch reads of that map, theAssumedinUpdateFromStateandDumpSchedulerState, are folded into single lookups as well, so the map has no read left that can throw._executingRequestByNodealso becomes aConcurrentDictionary. That part is independent of the null:new Dictionary<>(32)resizes once a build has more than 32 nodes, and reading a resizingDictionaryfrom another thread gives anIndexOutOfRangeExceptionor a corrupt walk rather than a stale value.On cost, the only operation that gets slower is the write: +15ns on net472 and +12ns on net10.0, with no allocation on either (microbenchmark, 2M ops, median of 11 runs). Writes happen only in
SchedulingData.UpdateFromState, once entering and once leavingExecuting, so they are bounded by scheduler state transitions, on the order of tens of thousands for a large build and well under a millisecond in total.ChangeToStatealready spends more than that per transition on itsDateTime.UtcNow(33ns on net472, 17ns on net10.0). The high-volume operation here is the read, sinceGetExecutingRequestByNoderuns once per file access when/reportfileaccessesis on, and reads measured unchanged on net472 and about 30% faster on net10.0.Testing:
GetExecutingRequestByNodeToleratesConcurrentRequestCompletionis the regression guard. It reproduces the reportedNullReferenceExceptionat the same frame against unfixed binaries, and asserts that the reader observed both a live request and a cleared node so it cannot go vacuous.GetExecutingRequestByNodeReflectsTheNodesCurrentRequestpins the contract but passes at baseline, so it does not catch the bug. Full unit test suite on net472 and net11.0: one test flips fail-to-pass, no regressions.I could not reproduce the original crash end to end (43 runs of a 2000-project build against unfixed binaries, zero hits), so the link to the field report is the matching stack frame plus the source analysis above rather than a customer repro.
FileAccessManagerhas two more reads of this shape that I left alone:_tempDirectoryatFileAccessManager.cs:71and_schedulerat:164/:167, both nulled byShutdownComponent. Same failure mode, much narrower window. I can fold them in if you'd prefer.