Urigo/graphql-modules

RangeError: Maximum call stack size exceeded

gurusamy opened this issue · 8 comments

Hi We are getting this error on production. It is happening on intermittently. Please let me know what could be the issue
RangeError: Maximum call stack size exceeded\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:199:38)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)

Hi @gurusamy , can you please share more information and a reproduction?

Hi @dotansimha we are not able to reproduce in dev environment. It is happening on production when traffic is high. We could not reproducible on dev load testing also. We are injecting ExecutionContext in singleton class. Any guess what could be the issue?

Below is the sample code

import { Injectable, ExecutionContext } from 'graphql-modules'
@Injectable()
export class SampleProvider extends BaseProvider {
    constructor() {}
   
    @ExecutionContext()
    private context: ExecutionContext
   
    someMethod(data) {
      const value = this.callAPI(data)
    }
}


export class BaseProvider  {
    constructor() {}
   
    private context: ExecutionContext
   
    callAPI() {
      console.log(this.context.reqContext);
      //Call API
    }
}




const resolvers = {
    Query: {
        myQuery(root, args, context, info) {
          context.injector.get(SampleProvider).someMethod(args)
      }
    }
}

@dotansimha We got another error for the same scenario
Maximum call stack size exceeded\n at Map.delete (<anonymous>)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:201:37)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13)\n at destroyContextAndItsChildren (/data/instance/node_modules/graphql-modules/index.js:206:13

Hi @gurusamy and @dotansimha, I have also received this error. However, for me it only occurs when I make database queries with many return objects. Have you already found a solution for this problem?

We need a failing test or a reproduction on CodeSandbox or StackBlitz

Hi @ardatan, I have created a repo on github for reproduction: https://github.com/Simon12121/graphql-modules-bug-replication. Because the error happens only when I make a query to MongoDb with many return objects, you would have to create an Atlas Free cluster. Maybe it happens also with other databases. I have stored my connection-string under environment/.env in the variable MONGO_DB_URI (not present in repo). First you would need to run the Mutation 'initFeatureTest' and the errors happens then when querying 'getAllNames'. I hope you can reproduce the error.

Hey @Simon12121 and @gurusamy, thanks for your patience! Can you try out graphql-modules@2.2.1-alpha-20231102120726-44db491f please? #2461 has potential to fix your issue too. Thanks!

Fixed in graphql-modules@2.2.1 with #2461. Please try it out!