You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I noticed during some testing that sending queries with 10000 fragments causes a RangeError: Maximum call stack size exceeded in OverlappingFieldsCanBeMergedRule error to be thrown from OverlappingFieldsCanBeMergedRule. I was wondering if this is the intended behavior and if not, how it should be handled.
This was observed on version 16.6.0 and 16.7.2
Below is the stack trace of the error and the steps to reproduce
Error
RangeError: Maximum call stack size exceeded
at getReferencedFieldsAndFragmentNames (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:678:45)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:211:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
at collectConflictsBetweenFieldsAndFragment (/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js:250:5)
Reproduction steps
import{parse,buildSchema,validate,OverlappingFieldsCanBeMergedRule,}from'graphql';constn=10000;constfragments=Array.from(Array(n).keys()).reduce((fragments,next)=>{returnfragments.concat(`\n fragment X${next+1} on Query { ...X${next} } `);},'');constquery=`query Chat { ...X${n}}${fragments}fragment X0 on Query { __typename}`;constschema=buildSchema(` type Query { test: String! }`);constast=parse(query);console.log(ast.definitions.length);constresult=validate(schema,ast,[OverlappingFieldsCanBeMergedRule]);
The text was updated successfully, but these errors were encountered:
I noticed during some testing that sending queries with 10000 fragments causes a
RangeError: Maximum call stack size exceeded in OverlappingFieldsCanBeMergedRule
error to be thrown fromOverlappingFieldsCanBeMergedRule
. I was wondering if this is the intended behavior and if not, how it should be handled.This was observed on version 16.6.0 and 16.7.2
Below is the stack trace of the error and the steps to reproduce
Error
Reproduction steps
The text was updated successfully, but these errors were encountered: