Add support for HotChocolate v16.x#8802
Conversation
BenchmarksBenchmark execution time: 2026-06-22 13:26:56 Comparing candidate commit cc222f5 in PR branch Found 0 performance improvements and 1 performance regressions! Performance is the same for 71 metrics, 0 unstable metrics, 66 known flaky benchmarks, 60 flaky benchmarks without significant changes.
|
This comment has been minimized.
This comment has been minimized.
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8802) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (72ms) : 69, 76
master - mean (72ms) : 68, 76
section Bailout
This PR (8802) - mean (75ms) : 73, 77
master - mean (77ms) : 73, 80
section CallTarget+Inlining+NGEN
This PR (8802) - mean (1,085ms) : 1023, 1147
master - mean (1,078ms) : 1036, 1120
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (112ms) : 106, 118
master - mean (112ms) : 107, 118
section Bailout
This PR (8802) - mean (111ms) : 108, 113
master - mean (112ms) : 107, 117
section CallTarget+Inlining+NGEN
This PR (8802) - mean (771ms) : 752, 789
master - mean (774ms) : 752, 796
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (100ms) : 95, 104
master - mean (99ms) : 95, 104
section Bailout
This PR (8802) - mean (100ms) : 95, 104
master - mean (99ms) : 96, 102
section CallTarget+Inlining+NGEN
This PR (8802) - mean (935ms) : 886, 984
master - mean (935ms) : 897, 973
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (95ms) : 92, 98
master - mean (95ms) : 92, 98
section Bailout
This PR (8802) - mean (97ms) : 93, 102
master - mean (98ms) : 92, 104
section CallTarget+Inlining+NGEN
This PR (8802) - mean (811ms) : 774, 847
master - mean (812ms) : 779, 846
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (205ms) : 199, 210
master - mean (202ms) : 195, 209
section Bailout
This PR (8802) - mean (207ms) : 203, 212
master - mean (206ms) : 199, 213
section CallTarget+Inlining+NGEN
This PR (8802) - mean (1,204ms) : 1160, 1247
master - mean (1,203ms) : 1162, 1245
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (291ms) : 284, 297
master - mean (286ms) : 278, 294
section Bailout
This PR (8802) - mean (290ms) : 284, 295
master - mean (290ms) : 283, 298
section CallTarget+Inlining+NGEN
This PR (8802) - mean (971ms) : 950, 993
master - mean (966ms) : 947, 985
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (284ms) : 277, 291
master - mean (283ms) : 276, 290
section Bailout
This PR (8802) - mean (283ms) : 277, 289
master - mean (282ms) : 278, 287
section CallTarget+Inlining+NGEN
This PR (8802) - mean (1,164ms) : 1129, 1199
master - mean (1,169ms) : 1121, 1218
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8802) - mean (281ms) : 275, 286
master - mean (282ms) : 273, 290
section Bailout
This PR (8802) - mean (280ms) : 276, 284
master - mean (281ms) : 272, 289
section CallTarget+Inlining+NGEN
This PR (8802) - mean (1,045ms) : 995, 1095
master - mean (1,043ms) : 996, 1089
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9771914 to
656d27b
Compare
HotChocolate v16.x
Snapshots difference summaryThe following differences have been observed in committed snapshots. It is meant to help the reviewer. 4 occurrences of : - events: [{"name":"dd.graphql.query.error","time_unix_nano":<DateTimeOffset.Now>,"attributes":{"message":"Unexpected Execution Error","locations":["1:18"],"path":["throwException"],"stacktrace":" at Samples.HotChocolate.Query.ThrowException() in Query.cs:line 00","extensions.int":1,"extensions.float":1.1,"extensions.str":"1","extensions.bool":true,"extensions.other":"[1,foo]","extensions.sbyte":-42,"extensions.byte":42,"extensions.short":-1000,"extensions.ushort":1000,"extensions.uint":4294967295,"extensions.long":-9223372036854775808,"extensions.ulong":"18446744073709551615","extensions.decimal":"3.14159265358979","extensions.double":3.141592653589793,"extensions.char":"A"}}],
+ events: [{"name":"dd.graphql.query.error","time_unix_nano":<DateTimeOffset.Now>,"attributes":{"message":"Unexpected Execution Error","path":["throwException"],"stacktrace":" at Samples.HotChocolate.Query.ThrowException() in Query.cs:line 00","extensions.int":1,"extensions.float":1.1,"extensions.str":"1","extensions.bool":true,"extensions.other":"[1,foo]","extensions.sbyte":-42,"extensions.byte":42,"extensions.short":-1000,"extensions.ushort":1000,"extensions.uint":4294967295,"extensions.long":-9223372036854775808,"extensions.ulong":"18446744073709551615","extensions.decimal":"3.14159265358979","extensions.double":3.141592653589793,"extensions.char":"A"}}],
2 occurrences of : - events: [{"name":"dd.graphql.query.error","time_unix_nano":<DateTimeOffset.Now>,"attributes":{"message":"Unexpected Execution Error","locations":["1:18"],"path":["throwExceptionIndex"],"stacktrace":" at Samples.HotChocolate.Query.ThrowExceptionIndex() in Query.cs:line 00","extensions.int":1,"extensions.float":1.1,"extensions.str":"1","extensions.bool":true,"extensions.other":"[1,foo]","extensions.sbyte":-42,"extensions.byte":42,"extensions.short":-1000,"extensions.ushort":1000,"extensions.uint":4294967295,"extensions.long":-9223372036854775808,"extensions.ulong":"18446744073709551615","extensions.decimal":"3.14159265358979","extensions.double":3.141592653589793,"extensions.char":"A"}}],
+ events: [{"name":"dd.graphql.query.error","time_unix_nano":<DateTimeOffset.Now>,"attributes":{"message":"Unexpected Execution Error","path":["throwExceptionIndex"],"stacktrace":" at Samples.HotChocolate.Query.ThrowExceptionIndex() in Query.cs:line 00","extensions.int":1,"extensions.float":1.1,"extensions.str":"1","extensions.bool":true,"extensions.other":"[1,foo]","extensions.sbyte":-42,"extensions.byte":42,"extensions.short":-1000,"extensions.ushort":1000,"extensions.uint":4294967295,"extensions.long":-9223372036854775808,"extensions.ulong":"18446744073709551615","extensions.decimal":"3.14159265358979","extensions.double":3.141592653589793,"extensions.char":"A"}}],
|
| /// https://github.com/ChilliCream/graphql-platform/blob/16.1.4/src/HotChocolate/Core/src/Types/Execution/Processing/OperationContext.Operation.cs | ||
| /// In v16 OperationContext moved from HotChocolate.Execution to HotChocolate.Types | ||
| /// </summary> | ||
| internal interface IOperationContextV16 : IDuckType |
There was a problem hiding this comment.
I think I remember we want to use struct rather than interfaces for perf reasons ?
Or is it one of those cases where using an interface makes sense ?
There was a problem hiding this comment.
Ah no because it's used as a constraint on a proxy ✅
all good then
There was a problem hiding this comment.
Yeah, it's one of those cases 😄
| "locations": [ | ||
| { | ||
| "line": 1, | ||
| "column": 18 | ||
| }, | ||
| ] |
There was a problem hiding this comment.
I guess expected to lose this with the later version?
There was a problem hiding this comment.
Yes, tl;dr; AFAICT, hot chocolate v16.x stopped adding source locations to Unexpected Execution Error results
Summary of changes
Updates the tested version of HotChocolate.AspNetCore to latest major
Reason for change
We want to support the latest majors
Implementation details
There were a lot of changes of the internals in v16. The main one I found was the move/rename of
RequestExecutortoDefaultRequestExecutorand moving to another assemblyTest coverage
Updated