GraphQL socket hang up randomly -> Page change to blank screen for 2 or 3 s before revert to normal

Hi,

I use Meteor 1.6.1 + React + GraphQL (= VulcanJS packages).
I notice that randomly my app page change to blank screen for 2 or 3s before reverting back to normal. This happen to any page in my app.

When I debug, I got the following error message:
Firefox can’t establish a connection to the server at wss://adalidda.net/sockjs/162/cr2quapq/websocket.
The connection to wss://adalidda.net/sockjs/162/cr2quapq/websocket was interrupted while the page was loading.
Firefox can’t establish a connection to the server at wss://adalidda.net/sockjs/434/jxtvgl74/websocket.
The connection to wss://adalidda.net/sockjs/434/jxtvgl74/websocket was interrupted while the page was loading

TypeError: s is undefined
Stack trace:
x<.node_modules.meteor[“vulcan:i18n”].lib.modules[“message.js”]/c/<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:115:1738
A.forEach@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:71:996
x<.node_modules.meteor[“vulcan:i18n”].lib.modules[“message.js”]/c@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:115:1712
Ct/<.beginWork@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1179688
o@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1192254
a@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1192575
s@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1192813
E@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1196353
_@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1196090
h@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1195219
d@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1194609
wt/a.enqueueForceUpdate@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:1169659
i<.node_modules.react.cjs[“react.production.min.js”]/o.prototype.forceUpdate@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:244723
o/a</u.prototype.forceRenderChildren@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:749973
o/a</u.prototype.subscribeToQuery/t@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:749487
o/a</u.prototype.subscribeToQuery/n@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:749570

i<.node_modules[“apollo-client”][“apollo.umd.js”]/</gt</n.prototype.setUpQuery/t.error/<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:797715
i<.node_modules[“apollo-client”][“apollo.umd.js”]/</gt</n.prototype.setUpQuery/t.error@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:797675
i<.node_modules[“apollo-client”][“apollo.umd.js”]/</Ct</t.prototype.queryListenerForObserver/<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:811021
i<.node_modules[“apollo-client”][“apollo.umd.js”]/</Ct</t.prototype.broadcastQueries/</<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:820008
i<.node_modules[“apollo-client”][“apollo.umd.js”]/</Ct</t.prototype.broadcastQueries/<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:819974
i<.node_modules[“apollo-client”][“apollo.umd.js”]/</Ct</t.prototype.broadcastQueries@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:819892
i<.node_modules[“apollo-client”][“apollo.umd.js”]/</Ct</t.prototype.fetchQuery/w<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:9:810290
n.bindEnvironment/<@https://adalidda.net/5eb684bc1b0fcab3f6e719d8703c323bdacd13d9.js?meteor_js_resource=true:1:7876


My app used mongodb with 3 replicasets.

It seem that the errors are due to:

  • websocket
  • apollo query
  • vulcan:i18n package

but why it’s happen randomly ? And how to fix it ?

Thank You
Adalidda

The error is cause by socket hang up randomly:
request to http://localhost:3000/graphql failed , reason socket hang up

It seem that the error is related to GraphQL under Node 8, see it here nodejs/node#13461

I don’t know how to fix it and why it happen randomly ?

The issue is related to PM2. By upgrading to PM2 latest on my servers, I am now able to deploy in cluster_mode and the issues are gone.

Thank You