Skip to content

Commit be990bd

Browse files
[Fusion] Fix inlining of abstract type requirements (#9509)
1 parent d68df74 commit be990bd

16 files changed

Lines changed: 2709 additions & 32 deletions

src/HotChocolate/Fusion/src/Fusion.Execution.Types/PlannerTopologyCache.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Immutable;
33
using System.Diagnostics.CodeAnalysis;
44
using HotChocolate.Fusion.Types.Metadata;
5+
using HotChocolate.Types;
56

67
namespace HotChocolate.Fusion.Types;
78

@@ -31,7 +32,10 @@ public static PlannerTopologyCache Build(FusionSchemaDefinition schema)
3132
{
3233
ArgumentNullException.ThrowIfNull(schema);
3334

34-
var complexTypes = schema.Types.AsEnumerable().OfType<FusionComplexTypeDefinition>().ToArray();
35+
var complexTypes = schema.Types.AsEnumerable()
36+
.OfType<FusionComplexTypeDefinition>()
37+
.Where(t => !((ITypeDefinition)t).IsIntrospectionType)
38+
.ToArray();
3539
var schemaNames = CollectSchemaNames(complexTypes);
3640
var fieldResolutions = BuildFieldResolutions(complexTypes);
3741
var orderedLookups = BuildOrderedLookups(schema, complexTypes, schemaNames);

src/HotChocolate/Fusion/src/Fusion.Execution/Planning/OperationPlanner.BuildExecutionTree.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ private OperationPlan BuildExecutionPlan(
2424
OperationDefinitionNode operationDefinition,
2525
ImmutableList<PlanStep> planSteps,
2626
int searchSpace,
27-
int expandedNodes)
27+
int expandedNodes,
28+
CancellationToken cancellationToken)
2829
{
2930
if (operation.IsIntrospectionOnly())
3031
{
@@ -44,7 +45,7 @@ private OperationPlan BuildExecutionPlan(
4445

4546
planSteps = TransformPlanSteps(planSteps, operationDefinition);
4647
IndexDependencies(planSteps, ctx);
47-
BuildExecutionNodes(planSteps, ctx, _schema, hasVariables);
48+
BuildExecutionNodes(planSteps, ctx, _schema, hasVariables, cancellationToken);
4849
MergeAndBatchOperations(ctx, _options.EnableRequestGrouping, _options.MergePolicy);
4950
WireExecutionDependencies(ctx);
5051

@@ -244,14 +245,17 @@ private static void BuildExecutionNodes(
244245
ImmutableList<PlanStep> planSteps,
245246
ExecutionPlanBuildContext ctx,
246247
ISchemaDefinition schema,
247-
bool hasVariables)
248+
bool hasVariables,
249+
CancellationToken cancellationToken)
248250
{
249251
var requiresUpload = schema.Types.TryGetType(UploadScalarName, out var uploadType) && uploadType.IsScalarType();
250252
var readySteps = planSteps.Where(t => !ctx.DependenciesByStepId.ContainsKey(t.Id)).ToList();
251253
var variableBuffer = hasVariables ? new List<string>() : null;
252254

253255
while (ctx.ProcessedStepIds.Count < planSteps.Count)
254256
{
257+
cancellationToken.ThrowIfCancellationRequested();
258+
255259
foreach (var step in readySteps)
256260
{
257261
if (!ctx.ProcessedStepIds.Add(step.Id))

0 commit comments

Comments
 (0)