parse-server-push-adapter icon indicating copy to clipboard operation
parse-server-push-adapter copied to clipboard

Push module: warning logs about Memory leak

Open uluru-phatnguyen opened this issue 7 years ago • 22 comments

Hi @flovilmart , I updated with newest version.

I got warning: Warning: Possible EventEmitter memory leak detected. 11 wakeup listeners added. Use emitter.setMaxListeners() to increase limit

Thanks.

uluru-phatnguyen avatar Aug 07 '17 04:08 uluru-phatnguyen

Related https://github.com/parse-community/parse-server/issues/4034

uluru-phatnguyen avatar Aug 07 '17 08:08 uluru-phatnguyen

node-pre-gyp ERR! parse-server-push-adapter APNS     at _connection._streamIds.forEach (/home/user_deploy/server-slave/source/node_modules/apn/lib/protocol/endpoint.js:155:16)
node-pre-gyp ERR! parse-server-push-adapter APNS     at Array.forEach (native)
node-pre-gyp ERR! parse-server-push-adapter APNS     at EventEmitter.close [as _close] (/home/user_deploy/server-slave/source/node_modules/apn/lib/protocol/endpoint.js:139:33)
node-pre-gyp ERR! parse-server-push-adapter APNS     at emitOne (events.js:101:20)
node-pre-gyp ERR! parse-server-push-adapter APNS     at TLSSocket.emit (events.js:188:7)
node-pre-gyp ERR! parse-server-push-adapter APNS     at _handle.close (net.js:497:12)
node-pre-gyp ERR! parse-server-push-adapter APNS     at TCP.done [as _onclose] (_tls_wrap.js:332:7)
node-pre-gyp ERR! parse-server-push-adapter APNS  APNS error transmitting to device %s with error %s 5fbdd21771431068be20c7346ef6f0afc408318769c9be6c25c27b9b67c2fee0 { VError: apn write failed: Not receiving Ping response after 150000 ms
node-pre-gyp ERR! parse-server-push-adapter APNS     at Stream.stream.on.err (/home/user_deploy/server-slave/source/node_modules/apn/lib/client.js:105:21)
node-pre-gyp ERR! parse-server-push-adapter APNS     at emitOne (events.js:96:13)
node-pre-gyp ERR! parse-server-push-adapter APNS     at Stream.emit (events.js:188:7)
node-pre-gyp ERR! parse-server-push-adapter APNS     at _connection._streamIds.forEach (/home/user_deploy/server-slave/source/node_modules/apn/lib/protocol/endpoint.js:155:16)
node-pre-gyp ERR! parse-server-push-adapter APNS     at Array.forEach (native)
node-pre-gyp ERR! parse-server-push-adapter APNS     at EventEmitter.close [as _close] (/home/user_deploy/server-slave/source/node_modules/apn/lib/protocol/endpoint.js:139:33)
node-pre-gyp ERR! parse-server-push-adapter APNS     at emitOne (events.js:101:20)

2017-08-08 12:05 +09:00:  parse-server-push-adapter APNS     at TLSSocket.emit (events.js:188:7)
node-pre-gyp ERR! parse-server-push-adapter APNS     at _handle.close (net.js:497:12)
node-pre-gyp ERR! parse-server-push-adapter APNS     at TCP.done [as _onclose] (_tls_wrap.js:332:7)
node-pre-gyp ERR! parse-server-push-adapter APNS   jse_shortmsg: 'apn write failed: Not receiving Ping response after 150000 ms',
node-pre-gyp ERR! parse-server-push-adapter APNS   jse_info: {},
node-pre-gyp ERR! parse-server-push-adapter APNS   message: 'apn write failed: Not receiving Ping response after 150000 ms',
node-pre-gyp ERR! parse-server-push-adapter APNS   stack: 'VError: apn write failed: Not receiving Ping response after 150000 ms\n    at Stream.stream.on.err (/home/user_deploy/server-slave/source/node_modules/apn/lib/client.js:105:21)\n    at emitOne (events.js:96:13)\n    at Stream.emit (events.js:188:7)\n    at _connection._streamIds.forEach (/home/user_deploy/server-slave/source/node_modules/apn/lib/protocol/endpoint.js:155:16)\n    at Array.forEach (native)\n    at EventEmitter.close [as _close] (/home/user_deploy/server-slave/source/node_modules/apn/lib/protocol/endpoint.js:139:33)\n    at emitOne (events.js:101:20)\n    at TLSSocket.emit (events.js:188:7)\n    at _handle.close (net.js:497:12)\n    at TCP.done [as _onclose] (_tls_wrap.js:332:7)' }
node-pre-gyp ERR! parse-server-push-adapter APNS VError: apn write failed: Not receiving Ping response after 150000 ms

uluru-phatnguyen avatar Aug 08 '17 03:08 uluru-phatnguyen

Duplicate #90

uluru-phatnguyen avatar Aug 08 '17 03:08 uluru-phatnguyen

I am getting the same Warning: Possible EventEmitter memory leak detected. 11 wakeup listeners added. Use emitter.setMaxListeners() to increase limit warning and I only have about 2,000 installations. Anyone find a fix to this? I've tried reading most of the posts but have not had any luck quite understanding a solution =\

idefen1 avatar Jan 06 '18 18:01 idefen1

I'm starting to see this recently.. Any updates to this.. I'm running the latest parse server 2.7.4

gateway avatar Apr 06 '18 00:04 gateway

I did some testing on the latest parse server release 2.7.4 and also see this warning in the logs. I do not really know how to debug this.

funkenstrahlen avatar May 12 '18 13:05 funkenstrahlen

This is probably an issue with the node apn module, and therefore the push adapter

flovilmart avatar May 12 '18 13:05 flovilmart

@flovilmart So you mean this should be reported to node-apn? Maybe this will be resolved with node apn 3.0 release. This might take some time though.

Until then I do not want to run 2.7.4 in production because of the memory leaks.

funkenstrahlen avatar May 12 '18 16:05 funkenstrahlen

That’s quite unrelated, the emitter and leaks, but your call. 2.7.4 has been out for a while, and I’m not sure anything will be done in node apn for this issue as they are moving to a native http2 implementation. Also, you can use any version of the push adapter you like!

flovilmart avatar May 12 '18 16:05 flovilmart

So you suggest using the 2.7.4 parse Server version with an older version of the push adapter by explicitly setting this in my package.json?

funkenstrahlen avatar May 12 '18 17:05 funkenstrahlen

Yep, and passing it into your ParseServer constructor, setting it in the package.json won’t automatically pick it up

flovilmart avatar May 12 '18 17:05 flovilmart

@funkenstrahlen are you able to get it working (with 2.7.4 and setting an older version of push adapter in package.json)? I'm unsure how to pass the apn adapter in the new ParseServer({...}) constructor.

refre5h avatar May 21 '18 17:05 refre5h

@refre5h you can do it this way:


const pushOptions = {
   ios: {} // your iOS config 
}
const { ParsePushAdapter } = require('@parse/push-adapter');
const pushAdapter = new ParsePushAdapter(pushOptions);

new ParseServer({
   ... 
   push: {
      adapter: pushAdapter,
   }
});

Does it help?

flovilmart avatar May 22 '18 02:05 flovilmart

@flovilmart I got the server running with your sample, tyvm! But I'm still getting the Possible EventEmitter memory leak detected. error with the lowest available version on npm (2.0.2). From the release log on git (https://github.com/parse-community/parse-server-push-adapter/releases), it looks like 1.3.0 is the version before the adapter upgraded apn, but I was unable to install v1.3.0 as I got the error No matching version found for @parse/push-adapter@^1.3.0 when doing npm install. Any advice please?

refre5h avatar May 22 '18 03:05 refre5h

@refre5h the package was renamed from parse-server-push-adapter so try this instead:

npm install --save [email protected]
const { ParsePushAdapter } = require('parse-server-push-adapter');
const pushAdapter = new ParsePushAdapter(pushOptions); 
...

flovilmart avatar May 22 '18 11:05 flovilmart

@flovilmart That clear things up! I'm having the server running for a couple hours now, and I don't see any memory leak issue after sending numerous push. Thanks again!

refre5h avatar May 22 '18 21:05 refre5h

@refre5h what version are you running now?

flovilmart avatar May 22 '18 21:05 flovilmart

"parse-server": "^2.7.4", "parse-server-push-adapter": "^1.3.0",

node -v // v6.12.2

...and I used your sample codes above in my index.js.

refre5h avatar May 22 '18 22:05 refre5h

Ok and using the newest alpha versions of the adapter alongside node 8 with the latest release? Any feedback?

flovilmart avatar May 22 '18 22:05 flovilmart

I currently run

  • node 8.*
  • parse-server 2.7.4
  • @parse/push-adapter 3.0.0-alpha1

It does not leak memory and runs fine for me for about 2 weeks now (regarding push notifications). I have not enabled auto clearing of bad device tokens yet.

I chose to try the alpha release of the push adapter because 1.3.0 is too old.

funkenstrahlen avatar May 23 '18 08:05 funkenstrahlen

Thanks for the feedback. The next release of parse server will be for node 8 minimum. It’s about time :)

flovilmart avatar May 23 '18 11:05 flovilmart

I currently run

  • node 8.*
  • parse-server 2.7.4
  • @parse/push-adapter 3.0.0-alpha1

It does not leak memory and runs fine for me for about 2 weeks now (regarding push notifications). I have not enabled auto clearing of bad device tokens yet.

I chose to try the alpha release of the push adapter because 1.3.0 is too old.

Hi @funkenstrahlen ,

I was having memory leak issues and decided to use 3.0.0 push-adapter like you suggested. Just wondering if you had any more memory issue after you switched to the newer version of push-adapter?

Thank you!

p.s. for those who wanna switch to push-adapter 3.0.0, make sure you have node version > 8.11.1 otherwise your parse server will throw an error of "no http2 module found". I previously had node 6 so when I upgraded push-adapter, the server died.

jenlai1345 avatar Mar 15 '19 08:03 jenlai1345