From b34d3e0a7432114003af76803b7c245c2f5bea06 Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Mon, 12 Jun 2023 04:51:24 -0700 Subject: [PATCH] Bootstrap logging and performance improvement Summary: Add a few console logs as to highlight how long does it take for our server to start. Additionally, do not wait until we are ready for client connections before attempting to launch. There's nothing else we do at this point. Instead, launch and wait until we are ready. Reviewed By: passy Differential Revision: D46639482 fbshipit-source-id: c098d229edc3cd52e5c876c509a7c81532635afa --- desktop/flipper-server/src/index.tsx | 63 ++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/desktop/flipper-server/src/index.tsx b/desktop/flipper-server/src/index.tsx index fd8927f4c..9ca31496c 100644 --- a/desktop/flipper-server/src/index.tsx +++ b/desktop/flipper-server/src/index.tsx @@ -149,8 +149,16 @@ async function shutdown() { } async function start() { + console.info('[flipper-server][bootstrap] Booting up'); + const t0 = performance.now(); + const enhanceLogger = await initializeLogger(staticPath); + const t1 = performance.now(); + console.info( + `[flipper-server][bootstrap] Logger initialised (${t1 - t0} ms)`, + ); + let keytar: any = undefined; try { if (!isTest()) { @@ -170,6 +178,9 @@ async function start() { console.error('[flipper-server] Failed to load keytar:', e); } + const t2 = performance.now(); + console.info(`[flipper-server][bootstrap] Keytar loaded (${t2 - t1} ms)`); + const isProduction = process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test'; @@ -180,16 +191,21 @@ async function start() { ); if (await checkPortInUse(argv.port)) { - console.warn(`[flipper-server] Port ${argv.port} is already in use.`); + console.warn(`[flipper-server] Port ${argv.port} is already in use`); if (!argv.replace) { - console.info( - `[flipper-server] Not replacing existing instance, exiting.`, - ); + console.info(`[flipper-server] Not replacing existing instance, exiting`); return; } await shutdown(); } + const t3 = performance.now(); + console.info( + `[flipper-server][bootstrap] Check for running instances completed (${ + t3 - t2 + } ms)`, + ); + const {app, server, socket, readyForIncomingConnections} = await startServer({ staticPath, entry: `index.web${argv.bundler ? '.dev' : ''}.html`, @@ -197,7 +213,11 @@ async function start() { tcp: argv.tcp, }); - // maybe at this point we could open up, http server is running. + const t4 = performance.now(); + + console.info( + `[flipper-server][bootstrap] HTTP server started (${t4 - t3} ms)`, + ); const flipperServer = await startFlipperServer( rootPath, @@ -209,6 +229,11 @@ async function start() { environmentInfo, ); + const t5 = performance.now(); + console.info( + `[flipper-server][bootstrap] FlipperServer created (${t5 - t4} ms)`, + ); + exitHook(async () => { await flipperServer.close(); }); @@ -218,6 +243,15 @@ async function start() { }); const companionEnv = await initCompanionEnv(flipperServer); + + const t6 = performance.now(); + + console.info( + `[flipper-server][bootstrap] Companion environment initialised (${ + t6 - t5 + } ms)`, + ); + if (argv.failFast) { flipperServer.on('server-state', ({state}) => { if (state === 'error') { @@ -230,12 +264,27 @@ async function start() { } await flipperServer.connect(); + const t7 = performance.now(); + console.info( + `[flipper-server][bootstrap] Ready for app connections (${t7 - t6} ms)`, + ); + if (argv.bundler) { await attachDevServer(app, server, socket, rootPath); } - await readyForIncomingConnections(flipperServer, companionEnv); - console.log('[flipper-server] listening at port ' + chalk.green(argv.port)); + const t8 = performance.now(); + console.info( + `[flipper-server][bootstrap] Development server attached (${t8 - t7} ms)`, + ); + readyForIncomingConnections(flipperServer, companionEnv); + + const t9 = performance.now(); + console.info( + `[flipper-server][bootstrap] Listening at port ${chalk.green(argv.port)} (${ + t9 - t8 + } ms)`, + ); } async function launch() {