[Diagnostics] Add GraphQL request spans to adapters#9684
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR extends HotChocolate diagnostics instrumentation to cover GraphQL execution triggered by the OpenAPI and MCP adapters (including Fusion adapters), ensuring GraphQL request spans are emitted even when execution happens outside the normal /graphql transport middleware.
Changes:
- Wrapped OpenAPI adapter endpoint execution in an
IServerDiagnosticEvents.ExecuteHttpRequest(...)scope to produce GraphQL request spans. - Wrapped MCP
tools/callGraphQL execution in anExecuteHttpRequest(...)scope to emit GraphQL request spans for tool execution. - Added/updated adapter-specific activity snapshot tests (and conditional test project references) for net9.0+.
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/HotChocolate.Fusion.Diagnostics.Tests.csproj | Conditionally references Fusion OpenAPI/MCP adapters for net9.0+ test execution. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/FusionOpenApiAdapterActivityTests.cs | Adds Fusion OpenAPI adapter activity tests (net9.0+). |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/FusionMcpAdapterActivityTests.cs | Adds Fusion MCP adapter activity tests with snapshot scrubbing (net9.0+). |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionOpenApiAdapterActivityTests.Http_Get_OpenApi.snap | Snapshot for successful Fusion OpenAPI GET execution spans. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionOpenApiAdapterActivityTests.Http_Get_OpenApi_GraphQL_Field_Error.snap | Snapshot for Fusion OpenAPI GET with GraphQL execution error spans. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionOpenApiAdapterActivityTests.Http_Get_OpenApi_Field_Does_Not_Exist.snap | Snapshot for Fusion OpenAPI route with invalid GraphQL selection. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionOpenApiAdapterActivityTests.Http_Get_OpenApi_Endpoint_Does_Not_Exist.snap | Snapshot for Fusion OpenAPI 404 path behavior. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionMcpAdapterActivityTests.Mcp_GetPrompt.snap | Snapshot for Fusion MCP prompt retrieval spans (with scrubbed session id). |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionMcpAdapterActivityTests.Mcp_CallTool.snap | Snapshot for Fusion MCP successful tool call spans including nested GraphQL execution. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionMcpAdapterActivityTests.Mcp_CallTool_Tool_Does_Not_Exist.snap | Snapshot for Fusion MCP tool-not-found error spans. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionMcpAdapterActivityTests.Mcp_CallTool_GraphQL_Field_Error.snap | Snapshot for Fusion MCP tool call producing GraphQL execution error spans. |
| src/HotChocolate/Fusion/test/Fusion.Diagnostics.Tests/snapshots/FusionMcpAdapterActivityTests.Mcp_CallTool_Field_Does_Not_Exist.snap | Snapshot for Fusion MCP tool call with invalid GraphQL selection spans. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/HotChocolate.Diagnostics.Tests.csproj | Conditionally references OpenAPI/MCP adapters for net9.0+ diagnostics tests. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/OpenApiAdapterActivityTests.cs | Adds OpenAPI adapter activity tests (net9.0+). |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/McpAdapterActivityTests.cs | Adds MCP adapter activity tests (net9.0+) with session-id scrubbing. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/OpenApiAdapterActivityTests.Http_Get_OpenApi.snap | Snapshot for OpenAPI adapter successful GET execution spans. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/OpenApiAdapterActivityTests.Http_Get_OpenApi_GraphQL_Field_Error.snap | Snapshot for OpenAPI adapter GraphQL execution error spans. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/OpenApiAdapterActivityTests.Http_Get_OpenApi_Field_Does_Not_Exist.snap | Snapshot for OpenAPI adapter invalid GraphQL selection case. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/OpenApiAdapterActivityTests.Http_Get_OpenApi_Endpoint_Does_Not_Exist.snap | Snapshot for OpenAPI adapter 404 path behavior. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/McpAdapterActivityTests.Mcp_GetPrompt.snap | Snapshot for MCP prompt retrieval spans (includes transport request span). |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/McpAdapterActivityTests.Mcp_CallTool.snap | Snapshot for MCP successful tool call spans including nested GraphQL execution. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/McpAdapterActivityTests.Mcp_CallTool_Tool_Does_Not_Exist.snap | Snapshot for MCP tool-not-found error spans. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/McpAdapterActivityTests.Mcp_CallTool_GraphQL_Field_Error.snap | Snapshot for MCP tool call producing GraphQL execution error spans. |
| src/HotChocolate/Diagnostics/test/Diagnostics.Tests/snapshots/McpAdapterActivityTests.Mcp_CallTool_Field_Does_Not_Exist.snap | Snapshot for MCP tool call with invalid GraphQL selection spans. |
| src/HotChocolate/Adapters/test/Adapters.Mcp.Tests/CoreIntegrationTests.cs | Updates test server setup to use AddGraphQLServer() in one integration path. |
| src/HotChocolate/Adapters/src/Adapters.OpenApi.Core/Execution/DynamicEndpointMiddleware.cs | Starts ExecuteHttpRequest diagnostic scope around OpenAPI adapter execution. |
| src/HotChocolate/Adapters/src/Adapters.Mcp.Core/HotChocolate.Adapters.Mcp.Core.csproj | Adds reference to AspNetCore pipeline project to support server diagnostic events usage. |
| src/HotChocolate/Adapters/src/Adapters.Mcp.Core/Handlers/CallToolHandler.cs | Starts ExecuteHttpRequest diagnostic scope around MCP tool GraphQL execution. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This was referenced May 13, 2026
Open
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.