lwsjs / local-web-server

A lean, modular web server for rapid full-stack development.
MIT License
1.2k stars 85 forks source link

Middleware error: MaxListenersExceededWarning #135

Closed kumargauravin closed 4 years ago

kumargauravin commented 4 years ago

This error is repeated for a long time finally coming up with the later error. Middleware error URIError: URI malformed

We are running Angular app on Docker using ws. version ~3.0.7 We need your mock services for health check so please let us know which version we can use for resolving this issue.

e.g. 6:02:00 PM: Middleware error URIError: URI malformed at decodeURIComponent (<anonymous>) at decode (/usr/src/npm/node_modules/koa-route/index.js:60:19) at Array.map (<anonymous>) at /usr/src/npm/node_modules/koa-route/index.js:34:35 at dispatch (/usr/src/npm/node_modules/koa-compose/index.js:42:32) at mockResponse (/usr/src/npm/node_modules/koa-mock-response/index.js:39:14) at dispatch (/usr/src/npm/node_modules/koa-compose/index.js:42:32) at mockResponse (/usr/src/npm/node_modules/koa-mock-response/index.js:39:14) at dispatch (/usr/src/npm/node_modules/koa-compose/index.js:42:32) at module.exports (/usr/src/npm/node_modules/koa-range/index.js:11:12) (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit (node:25) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit

75lb commented 4 years ago

Hi, the error stack above doesn't give me enough information.. if I can reproduce and debug the error then I can help - please post a reproduction case i can run and see fail. A simple, minimal script will do which highlights the issue.

I don't know which event emitter is failing. There are no events added in the koa-mock-response code so maybe it is failing in your mocks?

kumargauravin commented 4 years ago

Following is my mock just two services which should send 200 for readiness and liveliness checks. Meanwhile trying to find a way to re-produce. Can you see if any issue which can lead to memory leak from following code? Just hard coded true response.

const readiness = {};
readiness.route = '/readiness';
readiness.responses = []
const isReady = { 
  response: {status: 200}
 };

const isNotReady = { 
  response: {status: 500} 
 };

 const liveliness = {};
 liveliness.route = '/liveliness';
 liveliness.responses = []

function generateR(obj,isReady,isNotReady)
{
  let poll = Math.random();
  let poll2 = Math.random();
  let poll3 = Math.random();
  obj.responses = [];
  if( true ) {
    obj.responses.push (isReady);
  } else {
    obj.responses.push (isNotReady);
  }
  console.log(JSON.stringify(obj));
  return obj;
}

module.exports = MockBase => class MockOlympicUIHealthCheck extends MockBase {
    mocks () {
      return [
        generateR(readiness,isReady,isNotReady),
        generateR(liveliness,isReady,isNotReady)]
    }
  }
kumargauravin commented 4 years ago

Due to the above error, not only mock but serving application was also stopped. So server went down and we were required to start the Pod again. If that helps.

75lb commented 4 years ago

your mock reponse code looks fine.. i think the issue could be caused by a malformed URL.. try running local-web-server in verbose mode like this: ws --verbose and look through the verbose output.. try to find the malformed request URL causing the problem in the verbose output..

75lb commented 4 years ago

did you resolve this?

75lb commented 4 years ago

Closing until I receive more info.