Merging internal commits for release/8.0#66317
Merged
wtgodbe merged 20 commits intodotnet:release/8.0from Apr 14, 2026
Merged
Conversation
…otnet-runtime build 20260303.13 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.25-servicing.26112.3 -> To Version 8.0.25-servicing.26153.13 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.25 -> To Version 8.0.25
…otnet-efcore build 20260303.13 On relative base path root dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.25 -> To Version 8.0.26
…otnet-runtime build 20260303.21 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.25-servicing.26112.3 -> To Version 8.0.26-servicing.26153.21 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.25 -> To Version 8.0.26
…otnet-runtime build 20260304.3 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.25-servicing.26112.3 -> To Version 8.0.26-servicing.26154.3 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.25 -> To Version 8.0.26
…otnet-runtime build 20260306.13 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.25-servicing.26112.3 -> To Version 8.0.26-servicing.26156.13 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.25 -> To Version 8.0.26 System.Security.Cryptography.Xml From Version 8.0.2 -> To Version 8.0.3
…otnet-runtime build 20260311.8 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.25-servicing.26112.3 -> To Version 8.0.26-servicing.26161.8 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.25 -> To Version 8.0.26 System.Security.Cryptography.Xml From Version 8.0.2 -> To Version 8.0.3
#### AI description (iteration 1) #### PR Classification This PR is a feature enhancement that improves SignalR’s message buffering by adding an extra backpressure cancellation timeout. #### PR Summary The changes strengthen SignalR's handling of backpressure conditions by introducing a 5-second timeout for message buffering operations and updating the related tests to verify cancellation behavior. - **`src/SignalR/server/SignalR/test/Internal/MessageBufferTests.cs`**: Added tests for both default cancellation and explicit cancellation during backpressure, and refined test naming and timeout assertions. - **`src/SignalR/server/SignalR/test/HubConnectionHandlerTests.cs`**: Introduced a new backpressure timeout test scenario and updated the simulation of timeout conditions. - **`src/SignalR/common/Shared/MessageBuffer.cs`**: Implemented the extra 5-second cancellation timeout using a TimeProvider and linked cancellation tokens to improve backpressure handling. <!-- GitOpsUserAgent=GitOps.Apps.Server.pullrequestcopilot -->
…otnet-efcore build 20260313.2 On relative base path root dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.25 -> To Version 8.0.26
…otnet-runtime build 20260313.16 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.25-servicing.26112.3 -> To Version 8.0.26-servicing.26163.16 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.25 -> To Version 8.0.26 System.Security.Cryptography.Xml From Version 8.0.2 -> To Version 8.0.3
…otnet-efcore build 20260316.2 On relative base path root dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.25 -> To Version 8.0.26
…ng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: [83131e87-e80d-4d5b-f426-08dbd53b3319](https://maestro.dot.net/subscriptions?search=83131e87-e80d-4d5b-f426-08dbd53b3319) - **Build**: [20260313.16](https://dev.azure.com/dnceng/internal/_build/results?buildId=2926254) ([306162](https://maestro.dot.net/channel/3880/azdo:dnceng:internal:dotnet-runtime/build/306162)) - **Date Produced**: March 14, 2026 5:11:47 AM UTC - **Commit**: [d6db71e77e5f548bc295d8abb146692a206266d5](https://dev.azure.com/dnceng/internal/_git/dotnet-runtime?_a=history&version=GCd6db71e77e5f548bc295d8abb146692a206266d5) - **Branch**: [refs/heads/internal/release/8.0](https://dev.azure.com/dnceng/internal/_git/dotnet-runtime?version=GBrefs/heads/internal/release/8.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [8.0.25-servicing.26112.3 to 8.0.26-servicing.26163.16][10] - Microsoft.Extensions.HostFactoryResolver.Sources - Microsoft.Internal.Runtime.AspNetCore.Transport - Microsoft.NETCore.BrowserDebugHost.Transport - Microsoft.NETCore.Platforms - Microsoft.SourceBuild.Intermediate.runtime.linux-x64 - From [8.0.25 to 8.0.26][10] - Microsoft.NET.Runtime.MonoAOTCompiler.Task - Microsoft.NET.Runtime.WebAssembly.Sdk - Microsoft.NETCore.App.Ref - Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm - Microsoft.NETCore.App.Runtime.win-x64 - From [8.0.2 to 8.0.3][11] - System.Security.Cryptography.Xml [10]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCb753199016332cbf257e70c417aa5d1d02202dc7&targetVersion=GCd6db71e77e5f548bc295d8abb146692a206266d5&_a=files [11]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC81cabf2857a01351e5ab578947c7403a5b128ad1&targetVersion=GCd6db71e77e5f548bc295d8abb146692a206266d5&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:83131e87-e80d-4d5b-f426-08dbd53b3319) [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: [e179a2a7-bc5d-4498-2467-08dbd53ba9ce](https://maestro.dot.net/subscriptions?search=e179a2a7-bc5d-4498-2467-08dbd53ba9ce) - **Build**: [20260316.2](https://dev.azure.com/dnceng/internal/_build/results?buildId=2927864) ([306352](https://maestro.dot.net/channel/3880/azdo:dnceng:internal:dotnet-efcore/build/306352)) - **Date Produced**: March 16, 2026 5:46:26 PM UTC - **Commit**: [a40bd3c1b15d791fe690be8143c20b34b588e209](https://dev.azure.com/dnceng/internal/_git/dotnet-efcore?_a=history&version=GCa40bd3c1b15d791fe690be8143c20b34b588e209) - **Branch**: [refs/heads/internal/release/8.0](https://dev.azure.com/dnceng/internal/_git/dotnet-efcore?version=GBrefs/heads/internal/release/8.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: ...
…otnet-runtime build 20260316.25 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.26-servicing.26163.16 -> To Version 8.0.26-servicing.26166.25 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.26 -> To Version 8.0.26 System.Security.Cryptography.Xml From Version 8.0.3 -> To Version 8.0.3
…otnet-runtime build 20260318.19 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.26-servicing.26163.16 -> To Version 8.0.26-servicing.26168.19 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.26 -> To Version 8.0.26 System.Security.Cryptography.Xml From Version 8.0.3 -> To Version 8.0.3
…otnet-efcore build 20260319.2 On relative base path root dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.26 -> To Version 8.0.26
…otnet-runtime build 20260319.21 On relative base path root Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.26-servicing.26163.16 -> To Version 8.0.26-servicing.26169.21 Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 From Version 8.0.26 -> To Version 8.0.26 System.Security.Cryptography.Xml From Version 8.0.3 -> To Version 8.0.3
…otnet-efcore build 20260319.5 On relative base path root dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.26 -> To Version 8.0.26
…ng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: [83131e87-e80d-4d5b-f426-08dbd53b3319](https://maestro.dot.net/subscriptions?search=83131e87-e80d-4d5b-f426-08dbd53b3319) - **Build**: [20260319.21](https://dev.azure.com/dnceng/internal/_build/results?buildId=2930952) ([307027](https://maestro.dot.net/channel/3880/azdo:dnceng:internal:dotnet-runtime/build/307027)) - **Date Produced**: March 20, 2026 2:05:01 AM UTC - **Commit**: [ace9703c57db8596ccc3e3efdc7e65b6975c0b2d](https://dev.azure.com/dnceng/internal/_git/dotnet-runtime?_a=history&version=GCace9703c57db8596ccc3e3efdc7e65b6975c0b2d) - **Branch**: [refs/heads/internal/release/8.0](https://dev.azure.com/dnceng/internal/_git/dotnet-runtime?version=GBrefs/heads/internal/release/8.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [8.0.26-servicing.26163.16 to 8.0.26-servicing.26169.21][4] - Microsoft.Extensions.HostFactoryResolver.Sources - Microsoft.Internal.Runtime.AspNetCore.Transport - Microsoft.NETCore.BrowserDebugHost.Transport - Microsoft.NETCore.Platforms - Microsoft.SourceBuild.Intermediate.runtime.linux-x64 - From [8.0.26 to 8.0.26][4] - Microsoft.NET.Runtime.MonoAOTCompiler.Task - Microsoft.NET.Runtime.WebAssembly.Sdk - Microsoft.NETCore.App.Ref - Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm - Microsoft.NETCore.App.Runtime.win-x64 - From [8.0.3 to 8.0.3][4] - System.Security.Cryptography.Xml [4]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCd6db71e77e5f548bc295d8abb146692a206266d5&targetVersion=GCace9703c57db8596ccc3e3efdc7e65b6975c0b2d&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:83131e87-e80d-4d5b-f426-08dbd53b3319) [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: [e179a2a7-bc5d-4498-2467-08dbd53ba9ce](https://maestro.dot.net/subscriptions?search=e179a2a7-bc5d-4498-2467-08dbd53ba9ce) - **Build**: [20260319.5](https://dev.azure.com/dnceng/internal/_build/results?buildId=2931186) ([307046](https://maestro.dot.net/channel/3880/azdo:dnceng:internal:dotnet-efcore/build/307046)) - **Date Produced**: March 20, 2026 4:58:59 AM UTC - **Commit**: [10c618cdf5fe2e2dbf7928925d71930496ecb0f5](https://dev.azure.com/dnceng/internal/_git/dotnet-efcore?_a=history&version=GC10c618cdf5fe2e2dbf7928925d71930496ecb0f5) - **Branch**: [refs/heads/internal/release/8.0](https://dev.azure.com/dnceng/internal/_git/dotnet-efcore?version=GBrefs/heads/internal/release/8.0) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [8.0.26 to 8.0.26][5] - dotnet-ef - Microsoft.EntityFrameworkCore - Microsoft.EntityFrameworkCore.Design - Microsoft.EntityFrameworkCore.InMemory - Microsoft.Entit...
…-merge-8.0-2026-04-14-1149
Contributor
There was a problem hiding this comment.
Pull request overview
This PR merges internal changes intended for the release/8.0 line, including updates to SignalR message buffering/backpressure cancellation behavior and routine dependency/version roll-forward.
Changes:
- Adjusted stateful reconnect CloseMessage write cancellation behavior in
HubConnectionContext. - Added/updated tests covering buffered backpressure cancellation and a new close scenario in SignalR handler tests.
- Updated dependency versions (8.0.25 → 8.0.26, plus related servicing builds) and refreshed dependency-flow NuGet sources.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/SignalR/server/SignalR/test/Internal/MessageBufferTests.cs | Adds tests for buffered backpressure default cancellation and explicit cancellation; renames an existing backpressure test. |
| src/SignalR/server/SignalR/test/HubConnectionHandlerTests.cs | Extends the close scenarios and test flow to cover a backpressure-timeout close path. |
| src/SignalR/server/Core/src/HubConnectionContext.cs | Changes CloseMessage cancellation token selection for stateful reconnect writes. |
| src/SignalR/common/Shared/MessageBuffer.cs | Introduces a TimeProvider-backed 5s timeout for buffered backpressure waits and adjusts timer initialization. |
| eng/Versions.props | Rolls forward runtime/EFCore/package versions to 8.0.26 servicing set. |
| eng/Version.Details.xml | Updates dependency versions and SHAs to align with the new runtime/EFCore inputs. |
| NuGet.config | Adds new dependency-flow package sources and enables them in disabledPackageSources. |
Comments suppressed due to low confidence (1)
src/SignalR/common/Shared/MessageBuffer.cs:181
- WriteAsyncCore only applies the internal 5-second CancellationTokenSource while waiting for buffered backpressure (_waitForAck). If the caller passes a non-cancelable token (e.g., CancellationToken.None for CloseMessage) and the write blocks on pipe backpressure, _writer.WriteAsync(messageBytes, cancellationToken) can hang indefinitely. Consider ensuring the token passed to _writer.WriteAsync is always cancelable (e.g., link in an internal timeout when the provided token can't be canceled), not just for the ack-wait path.
private async ValueTask<FlushResult> WriteAsyncCore(Type hubMessageType, ReadOnlyMemory<byte> messageBytes, CancellationToken cancellationToken)
{
// TODO: Add backpressure based on message count
if (_bufferedByteCount > _bufferLimit)
{
#if NET
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5), _timeProvider);
#else
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
#endif
using var _ = CancellationTokenUtils.CreateLinkedToken(cts.Token, cancellationToken, out var linkedToken);
// primitive backpressure if buffer is full
while (await _waitForAck.Reader.WaitToReadAsync(linkedToken).ConfigureAwait(false))
{
if (_waitForAck.Reader.TryRead(out var count) && count < _bufferLimit)
{
break;
}
}
}
// Avoid condition where last Ack position is the position we're currently writing into the buffer
// If we wrote messages around the entire buffer before another Ack arrived we would end up reading the Ack position and writing over a buffered message
_waitForAck.Reader.TryRead(out _);
// TODO: We could consider buffering messages until they hit backpressure in the case when the connection is down
await _resend.Task.ConfigureAwait(false);
// Await the flush outside of the _writeLock so AckAsync can make forward progress if there is backpressure.
// Multiple flush calls is fine, it's multiple GetMemory calls that are problematic, which is fine since we lock around the actual write
ValueTask<FlushResult> writeTask;
await _writeLock.WaitAsync(cancellationToken: default).ConfigureAwait(false);
try
{
if (typeof(HubInvocationMessage).IsAssignableFrom(hubMessageType))
{
_totalMessageCount++;
_bufferedByteCount += messageBytes.Length;
_buffer.AddMessage(messageBytes, _totalMessageCount, _pool);
writeTask = _writer.WriteAsync(messageBytes, cancellationToken);
}
else
{
// Non-ackable message, don't add to buffer
writeTask = _writer.WriteAsync(messageBytes, cancellationToken);
}
Member
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
Member
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.