Casper Alant
Casper Alant

Reputation: 462

Crossbar Thruway worker crashes

I have a Crossbar.io server with PHP Thruway workers. Recently, I started getting the following error. It happens about once a day now:

2016-04-17T21:08:12+0000 [Router       9572] Unable to format event {'log_logger': <Logger 'crossbar.router.protocol.WampWebSocketServerProtocol'>, 'log_time': 1460927292.17918, 'log_source': None, 'log_format': 'Traceback (most recent call last):\n  File "/usr/local/lib/python2.7/site-packages/autobahn/wamp/websocket.py", line 88, in onMessage\n    for msg in self._serializer.unserialize(payload, isBinary):\n  File "/usr/local/lib/python2.7/site-packages/autobahn/wamp/serializer.py", line 106, in unserialize\n    raise ProtocolError("invalid serialization of WAMP message ({0})".format(e))\nProtocolError: invalid serialization of WAMP message (Expected object or value)\n'}: tuple index out of range
2016-04-17T21:08:15+0000 [Guest        9583] The connected has closed with reason: close
2016-04-17T21:08:19+0000 [Guest        9583] PHP Fatal error:  Call to a member function call() on null in /var/www/html/pickupServer/vendor/voryx/thruway/src/Thruway/ClientSession.php on line 106
2016-04-17T21:08:19+0000 [Guest        9583] Fatal error: Call to a member function call() on null in /var/www/html/pickupServer/vendor/voryx/thruway/src/Thruway/ClientSession.php on line 106
2016-04-17T21:08:19+0000 [Controller   9565] Guest worker2 exited with error A process has ended with a probable error condition: process ended with exit code 255.

Does anyone know hot to prevent this?

How do I automatically restart the worker if it fails as in this case?

Upvotes: 0

Views: 206

Answers (1)

Nuno Vitorino
Nuno Vitorino

Reputation: 1

I solved it in linux with MONIT checking crossbar-controler process and adding the following line:

if children < 3 then restart

3 is the number os child processes that crossbar-controler has on my environment. If any of them exits then crossbar restarts itself and notifies me. You have to check the number of child processes you have running using:

sudo service crossbar status.

This solves the error exit worker but with a cost of restarting the crossbar-controler. I am convinced that must be a crossbar/thruway way of solving the problem. The ideal way is to try catch all possible errors of php to prevent fatal worker exits.

Thanks

Upvotes: 0

Related Questions