Skip to content

Commit a0ecef3

Browse files
committed
fix
1 parent 967fe9f commit a0ecef3

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

Diff for: src/execution/IncrementalGraph.ts

+5-8
Original file line numberDiff line numberDiff line change
@@ -132,14 +132,8 @@ export class IncrementalGraph {
132132
return { newRootNodes, successfulExecutionGroups };
133133
}
134134

135-
removeDeferredFragment(
136-
deferredFragmentRecord: DeferredFragmentRecord,
137-
): boolean {
138-
if (!this._rootNodes.has(deferredFragmentRecord)) {
139-
return false;
140-
}
135+
removeDeferredFragment(deferredFragmentRecord: DeferredFragmentRecord): void {
141136
this._rootNodes.delete(deferredFragmentRecord);
142-
return true;
143137
}
144138

145139
removeStream(streamRecord: StreamRecord): void {
@@ -219,7 +213,10 @@ export class IncrementalGraph {
219213
deferredFragmentRecord: DeferredFragmentRecord,
220214
initialResultChildren: Set<DeliveryGroup> | undefined,
221215
): void {
222-
if (this._rootNodes.has(deferredFragmentRecord)) {
216+
if (
217+
deferredFragmentRecord.failed ||
218+
this._rootNodes.has(deferredFragmentRecord)
219+
) {
223220
return;
224221
}
225222
const parent = deferredFragmentRecord.parent;

Diff for: src/execution/IncrementalPublisher.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,13 @@ class IncrementalPublisher {
228228
if (isFailedExecutionGroup(completedExecutionGroup)) {
229229
for (const deferredFragmentRecord of completedExecutionGroup
230230
.pendingExecutionGroup.deferredFragmentRecords) {
231-
const id = deferredFragmentRecord.id;
232-
if (
233-
!this._incrementalGraph.removeDeferredFragment(deferredFragmentRecord)
234-
) {
235-
// This can occur if multiple deferred grouped field sets error for a fragment.
231+
const failed = deferredFragmentRecord.failed;
232+
if (failed) {
236233
continue;
237234
}
235+
deferredFragmentRecord.failed = true;
236+
const id = deferredFragmentRecord.id;
237+
this._incrementalGraph.removeDeferredFragment(deferredFragmentRecord);
238238
invariant(id !== undefined);
239239
context.completed.push({
240240
id,

Diff for: src/execution/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ export class DeferredFragmentRecord {
224224
pendingExecutionGroups: Set<PendingExecutionGroup>;
225225
successfulExecutionGroups: Set<SuccessfulExecutionGroup>;
226226
children: Set<DeliveryGroup>;
227+
failed: true | undefined;
227228

228229
constructor(
229230
path: Path | undefined,

0 commit comments

Comments
 (0)