RocketMan / zookeeper

Zookeeper Online is a music database and charting application for student and independent radio.
GNU General Public License v3.0
4 stars 3 forks source link

REGRESSION(v3.0.0-rc.8): Push proxy raising exception #448

Closed RocketMan closed 2 months ago

RocketMan commented 2 months ago

For failed deliveries of the push notification, a stack track is being logged (see below).

Expected: An error message should be logged, but no stack trace.

Apr 15 06:00:42 zookeeper zk[3320]: Unhandled promise rejection with RuntimeExce
ption: Connection to tcp://<redacted>:8080 failed: Last error for IP
v4: Connection to tcp://<redacted>:8080 failed: Connection refused (ECONNREFU
SED). Previous error for IPv6: DNS query for <redacted> (AAAA) did n
ot return a valid answer (NOERROR / NODATA) in /srv/http/zookeeper/vendor/react/
socket/src/HappyEyeBallsConnectionBuilder.php:210
Apr 15 06:00:42 zookeeper zk[3320]: Stack trace:
Apr 15 06:00:42 zookeeper zk[3320]: #0 /srv/http/zookeeper/vendor/react/promise/
src/Internal/RejectedPromise.php(73): React\Socket\HappyEyeBallsConnectionBuilde
r->React\Socket\{closure}()
Apr 15 06:00:42 zookeeper zk[3320]: #1 /srv/http/zookeeper/vendor/react/promise/
src/Promise.php(173): React\Promise\Internal\RejectedPromise->then()
Apr 15 06:00:42 zookeeper zk[3320]: #2 /srv/http/zookeeper/vendor/react/promise/
src/Promise.php(221): React\Promise\Promise::React\Promise\{closure}()
Apr 15 06:00:42 zookeeper zk[3320]: #3 /srv/http/zookeeper/vendor/react/promise/
src/Promise.php(192): React\Promise\Promise->settle()
Apr 15 06:00:42 zookeeper zk[3320]: #4 /srv/http/zookeeper/vendor/react/promise/
src/Promise.php(292): React\Promise\Promise->reject()
Apr 15 06:00:42 zookeeper zk[3320]: #5 /srv/http/zookeeper/vendor/react/socket/s
rc/TcpConnector.php(140): React\Promise\Promise::React\Promise\{closure}()
Apr 15 06:00:42 zookeeper zk[3320]: #6 /srv/http/zookeeper/vendor/react/event-lo
op/src/StreamSelectLoop.php(254): React\Socket\TcpConnector->React\Socket\{closu
re}()
Apr 15 06:00:42 zookeeper zk[3320]: #7 /srv/http/zookeeper/vendor/react/event-lo
op/src/StreamSelectLoop.php(213): React\EventLoop\StreamSelectLoop->waitForStrea
mActivity()
Apr 15 06:00:42 zookeeper zk[3320]: #8 /srv/http/zookeeper/controllers/PushServe
r.php(763): React\EventLoop\StreamSelectLoop->run()
Apr 15 06:00:42 zookeeper zk[3320]: #9 /srv/http/zookeeper/controllers/Dispatche
r.php(50): ZK\Controllers\PushServer->processRequest()
Apr 15 06:00:42 zookeeper zk[3320]: #10 /srv/http/zookeeper/index.php(38): ZK\Co
ntrollers\Dispatcher->processRequest()
Apr 15 06:00:42 zookeeper zk[3320]: #11 /srv/http/zookeeper/zk(53): require('...
')
Apr 15 06:00:42 zookeeper zk[3320]: #12 {main}
RocketMan commented 2 months ago

Root cause is change in unhandled promise rejection in react/promise:^3.0. See https://github.com/beyondcode/laravel-websockets/issues/1139

Situation is resolved by adding a promise rejection handler to the push proxy.