-
Notifications
You must be signed in to change notification settings - Fork 63
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Hi,
I encountered this issue when making a create request for entity A that has a circular reference with B. Schema definition is implemented with type-graphql roughly like this.
@ObjectType()
@InputType('FooInput')
class Foo {
@Field(() => Number)
id: number;
@Field(() => Bar, {nullable: true})
bar: Bar;
}
@ObjectType()
@InputType('BarInput')
class Bar {
@Field(() => Number)
id: number;
@Field(() => Foo, {nullable: true})
foo: Foo;
}
@Resolver(Foo)
class FooResolver {
@Mutation()
addFoo(@Arg('foo') foo: Foo): string {
return 'ok';
}
}
Now if I try to send a query
mutation AddFoo($foo: FooInput!){
addFoo(foo: $foo)
}
with variables
{
"foo": {
"id": 1,
"bar": null
}
}
the query execution gets stuck in a recursive loop during compileQuery call or more specifically in generateInput function. Apparently when going through the request variables in if (isInputType(varType)) block generating another call to itself and this goes on until out of memory error.
I'm using apollo-server with custom executor like described in the examples. Similar issues do not occur with default apollo-server config or by running the query with with graphql-js execute.
new ApolloServer({
executor: ({ source }) => {
const compiled = compileQuery(schema, parse(source)); // <-- never returns from here
// ...
}
});
TomCaserta and durdenx
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working