From d5a0c206f241b6979f99870642f85665eb91df41 Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Thu, 2 Nov 2023 10:42:15 -0700 Subject: [PATCH] Track WS server error Summary: This is currently done by querying the 'console-log' event. Instead, make it type safe and official. Reviewed By: antonk52 Differential Revision: D50927803 fbshipit-source-id: e0488782dd584e36b6f742f9892fc09ffaf62469 --- .../src/app-connectivity/ServerWebSocket.tsx | 7 ++++--- desktop/flipper-server-core/src/tracker.tsx | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/desktop/flipper-server-core/src/app-connectivity/ServerWebSocket.tsx b/desktop/flipper-server-core/src/app-connectivity/ServerWebSocket.tsx index 0e882e26d..100ba2d48 100644 --- a/desktop/flipper-server-core/src/app-connectivity/ServerWebSocket.tsx +++ b/desktop/flipper-server-core/src/app-connectivity/ServerWebSocket.tsx @@ -29,6 +29,7 @@ import {Server} from 'net'; import {serializeError} from 'serialize-error'; import {WSCloseCode} from '../utils/WSCloseCode'; import {recorder} from '../recorder'; +import {tracker} from '../tracker'; export interface ConnectionCtx { clientQuery?: ClientQuery; @@ -63,11 +64,11 @@ class ServerWebSocket extends ServerWebSocketBase { // We do not need to listen to http server's `error` because it is propagated to WS // https://github.com/websockets/ws/blob/a3a22e4ed39c1a3be8e727e9c630dd440edc61dd/lib/websocket-server.js#L109 const onConnectionError = (error: Error) => { + const message = JSON.stringify(serializeError(error)); + tracker.track('server-ws-server-error', {port, error: message}); reject( new Error( - `Unable to start server at port ${port} due to ${JSON.stringify( - serializeError(error), - )}`, + `Unable to start server at port ${port} due to ${message}`, ), ); }; diff --git a/desktop/flipper-server-core/src/tracker.tsx b/desktop/flipper-server-core/src/tracker.tsx index 72836c6e1..e3db6228d 100644 --- a/desktop/flipper-server-core/src/tracker.tsx +++ b/desktop/flipper-server-core/src/tracker.tsx @@ -48,6 +48,7 @@ type TrackerEvents = { }; 'server-socket-already-in-use': {}; 'server-open-ui': {browser: boolean; hasToken: boolean}; + 'server-ws-server-error': {port: number; error: string}; 'browser-connection-created': { successful: boolean; timeMS: number;