Repository navigation
[Diagnostics] Improve WebSocket handling - #10390
Merged
Merged
Conversation
tobias-tengler
marked this pull request as ready for review
September 14, 2026 15:05
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
An unresolved critical batch-span diagnostics issue and moderate cross-target API compatibility break block approval.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Improves WebSocket diagnostics across supported protocols and Fusion.
Changes:
- Adds connection-init diagnostic events and execution tracing.
- Expands lifecycle, payload, header, and error test coverage.
- Updates migration documentation and .NET 11 compatibility handling.
File summaries
| File | Reviewed change |
|---|---|
website/content/docs/hotchocolate/migrating/migrate-from-16-6-to-16-7.md |
Documents the diagnostic API changes. |
website/content/docs/fusion/migration/migrate-from-16-6-to-16-7.md |
Documents the Fusion API changes. |
src/HotChocolate/Utilities/test/Utilities.Tests/MiddlewareCompilerTests.cs |
Adds .NET 11 compatibility handling. |
src/HotChocolate/Utilities/src/Utilities/DependencyInjection/EmptyServiceProvider.cs |
Adds target-specific service-provider handling. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/FusionActivityServerDiagnosticListenerTests.cs |
Adds Fusion WebSocket diagnostics coverage. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes.snap |
Updates the expected Fusion WebSocket trace. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes_NET11_0.snap |
Updates the .NET 11 Fusion trace. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes_Default.snap |
Updates the default Fusion trace. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes_Default_NET11_0.snap |
Updates the default .NET 11 Fusion trace. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Client_Closes_Connection.snap |
Captures the Fusion client-close trace. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Client_Closes_Connection_NET11_0.snap |
Captures the .NET 11 Fusion client-close trace. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Header_Should_Be_Added_As_Tag_To_Request_And_Event_Spans.snap |
Captures Fusion WebSocket header enrichment. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Header_Should_Be_Added_As_Tag_To_Request_And_Event_Spans_NET11_0.snap |
Captures .NET 11 Fusion header enrichment. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans.snap |
Captures Fusion connection-init payload enrichment. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans_NET11_0.snap |
Captures .NET 11 Fusion payload enrichment. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Apollo_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans.snap |
Captures Fusion Apollo payload enrichment. |
src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/__snapshots__/FusionActivityServerDiagnosticListenerTests.WebSocket_Apollo_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans_NET11_0.snap |
Captures .NET 11 Fusion Apollo payload enrichment. |
src/HotChocolate/Fusion/src/Fusion.Diagnostics/Listeners/FusionActivityServerDiagnosticListener.cs |
Forwards connection-init events. |
src/HotChocolate/Fusion/src/Fusion.Diagnostics/Listeners/FusionActivityExecutionDiagnosticEventListener.cs |
Handles Fusion WebSocket execution spans. |
src/HotChocolate/Fusion/src/Fusion.AspNetCore/DependencyInjection/FusionServerServiceCollectionExtensions.cs |
Registers Fusion diagnostic events. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes.snap |
Updates the standard completion trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes_NET11_0.snap |
Updates the standard .NET 11 completion trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes_Default.snap |
Updates the default completion trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Server_Completes_Default_NET11_0.snap |
Updates the default .NET 11 completion trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Client_Closes_Connection.snap |
Captures the standard client-close trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Should_Be_Ok_When_Client_Closes_Connection_NET11_0.snap |
Captures the .NET 11 client-close trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Event_Should_Be_Error_When_Timeout.snap |
Captures the timeout error trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Subscription_Event_Should_Be_Error_When_Timeout_NET11_0.snap |
Captures the .NET 11 timeout error trace. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Header_Should_Be_Added_As_Tag_To_Request_And_Event_Spans.snap |
Captures standard WebSocket header enrichment. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Header_Should_Be_Added_As_Tag_To_Request_And_Event_Spans_NET11_0.snap |
Captures .NET 11 header enrichment. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans.snap |
Captures standard connection-init enrichment. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans_NET11_0.snap |
Captures .NET 11 connection-init enrichment. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Apollo_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans.snap |
Captures standard Apollo payload enrichment. |
src/HotChocolate/Diagnostics/test/Diagnostics.Tests/__snapshots__/ActivityServerDiagnosticListenerTests.WebSocket_Apollo_ConnectionInit_Payload_Should_Be_Added_As_Tag_To_Request_And_Event_Spans_NET11_0.snap |
Captures .NET 11 Apollo payload enrichment. |
src/HotChocolate/Diagnostics/src/Diagnostics/Listeners/ActivityServerDiagnosticListener.cs |
Forwards connection-init events. |
src/HotChocolate/Diagnostics/src/Diagnostics/Listeners/ActivityExecutionDiagnosticListener.cs |
Handles WebSocket execution spans. |
src/HotChocolate/Diagnostics/src/Diagnostics.Core/ActivityEnricherBase.cs |
Adds the enrichment hook. |
src/HotChocolate/Core/test/Types.Tests/Types/Descriptors/DescriptorContextTests.cs |
Adds .NET 11 compatibility imports. |
src/HotChocolate/Core/test/Types.Tests/Resolvers/ResolverCompilerTests.cs |
Adds .NET 11 compatibility imports. |
src/HotChocolate/AspNetCore/src/AspNetCore/Extensions/HotChocolateAspNetCoreServiceCollectionExtensions.Subscriptions.cs |
Registers subscription diagnostic events. |
src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Subscriptions/Protocols/GraphQLOverWebSocket/GraphQLOverWebSocketProtocolHandler.cs |
Raises the connection-init event. |
src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Subscriptions/Protocols/Apollo/ApolloSubscriptionProtocolHandler.cs |
Raises the Apollo connection-init event. |
src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Instrumentation/ServerDiagnosticEventListener.cs |
Adds the default event implementation. |
src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Instrumentation/NoopServerDiagnosticEventListener.cs |
Implements the new event. |
src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Instrumentation/IServerDiagnosticEvents.cs |
Defines the new diagnostic event. |
src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Instrumentation/AggregateServerDiagnosticEventListener.cs |
Aggregates the new event. |
Review details
- Files reviewed: 47/47 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Contributor
This was referenced Oct 25, 2026
Merged
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.