Skip to content

[Diagnostics] Improve WebSocket handling - #10390

Merged
tobias-tengler merged 9 commits into
mainfrom
tte/websocket-diagnostics
Sep 14, 2026
Merged

tobias-tengler merged 9 commits into
mainfrom
tte/websocket-diagnostics

Conversation

@tobias-tengler

Copy link
Copy Markdown
Member

No description provided.

@github-actions github-actions Bot added the 📚 documentation This issue is about working on our documentation. label Sep 14, 2026
@tobias-tengler
tobias-tengler marked this pull request as ready for review September 14, 2026 15:05
Copilot AI lite review requested due to automatic review settings September 14, 2026 15:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 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.

@github-actions

Copy link
Copy Markdown
Contributor

Patch coverage

78.9% of changed lines covered (30/38)

File Covered Changed Patch %
…/Instrumentation/AggregateServerDiagnosticEventListener.cs 0 6 0.0% 🔴
…/Instrumentation/ServerDiagnosticEventListener.cs 0 2 0.0% 🔴
…/Instrumentation/NoopServerDiagnosticEventListener.cs 2 2 100.0% 🟢
…/Protocols/Apollo/ApolloSubscriptionProtocolHandler.cs 4 4 100.0% 🟢
…/GraphQLOverWebSocket/GraphQLOverWebSocketProtocolHandler.cs 3 3 100.0% 🟢
…/HotChocolateAspNetCoreServiceCollectionExtensions.Subscriptions.cs 4 4 100.0% 🟢
…/Diagnostics/src/Diagnostics.Core/ActivityEnricherBase.cs 1 1 100.0% 🟢
…/Diagnostics/Listeners/ActivityExecutionDiagnosticListener.cs 5 5 100.0% 🟢
…/Diagnostics/Listeners/ActivityServerDiagnosticListener.cs 1 1 100.0% 🟢
…/FusionServerServiceCollectionExtensions.cs 4 4 100.0% 🟢
…/Listeners/FusionActivityExecutionDiagnosticEventListener.cs 5 5 100.0% 🟢
…/Listeners/FusionActivityServerDiagnosticListener.cs 1 1 100.0% 🟢
Uncovered changed lines (JSON)
{
  "sha": "dd10bb971724c08b3e38f19d076eee005b1a026d",
  "files": [
    { "path": "src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Instrumentation/AggregateServerDiagnosticEventListener.cs", "ranges": [[119, 124]] },
    { "path": "src/HotChocolate/AspNetCore/src/AspNetCore.Pipeline/Instrumentation/ServerDiagnosticEventListener.cs", "ranges": [[73, 74]] }
  ]
}

Project coverage: 57.9% (288310/497949 lines)

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

Labels

📚 documentation This issue is about working on our documentation. 🌶️ hot chocolate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants