Skip to content

Merging internal commits for release/8.0#66317

Merged
wtgodbe merged 20 commits intodotnet:release/8.0from
vseanreesermsft:internal-merge-8.0-2026-04-14-1149
Apr 14, 2026
Merged

Merging internal commits for release/8.0#66317
wtgodbe merged 20 commits intodotnet:release/8.0from
vseanreesermsft:internal-merge-8.0-2026-04-14-1149

Conversation

@vseanreesermsft
Copy link
Copy Markdown
Contributor

No description provided.

dotnet-bot and others added 20 commits March 3, 2026 22:49
…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...
Copilot AI review requested due to automatic review settings April 14, 2026 18:50
@dotnet-policy-service dotnet-policy-service Bot added this to the 8.0.x milestone Apr 14, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);
            }

Comment thread src/SignalR/server/SignalR/test/Internal/MessageBufferTests.cs
Comment thread src/SignalR/server/SignalR/test/Internal/MessageBufferTests.cs
Comment thread src/SignalR/server/Core/src/HubConnectionContext.cs
@github-actions github-actions Bot added the area-signalr Includes: SignalR clients and servers label Apr 14, 2026
@wtgodbe
Copy link
Copy Markdown
Member

wtgodbe commented Apr 14, 2026

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 3 pipeline(s).

@wtgodbe
Copy link
Copy Markdown
Member

wtgodbe commented Apr 14, 2026

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 3 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-signalr Includes: SignalR clients and servers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants