Track bootstrap diagnostics
Summary: ^ In addition to logging to the console bootstrap performance metrics, track these events to scuba as well. Reviewed By: aigoncharov Differential Revision: D46648876 fbshipit-source-id: 191704c13158884bb8cfbca614a23f2a64f1fd93
This commit is contained in:
committed by
Facebook GitHub Bot
parent
5f292bcc08
commit
0db4e99aff
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
export {FlipperServerImpl} from './FlipperServerImpl';
|
export {FlipperServerImpl} from './FlipperServerImpl';
|
||||||
export {loadSettings} from './utils/settings';
|
export {loadSettings} from './utils/settings';
|
||||||
|
export * from './utils/tracker';
|
||||||
export {loadLauncherSettings} from './utils/launcherSettings';
|
export {loadLauncherSettings} from './utils/launcherSettings';
|
||||||
export {loadProcessConfig} from './utils/processConfig';
|
export {loadProcessConfig} from './utils/processConfig';
|
||||||
export {getEnvironmentInfo} from './utils/environmentInfo';
|
export {getEnvironmentInfo} from './utils/environmentInfo';
|
||||||
|
|||||||
@@ -22,7 +22,20 @@ type AppConnectionCertificateExchangePayload = AppConnectionPayload & {
|
|||||||
error?: string;
|
error?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type ServerBootstrapPerformancePayload = {
|
||||||
|
loggerInitializedMS: number;
|
||||||
|
keytarLoadedMS: number;
|
||||||
|
runningInstanceShutdownMS: number;
|
||||||
|
httpServerStartedMS: number;
|
||||||
|
serverCreatedMS: number;
|
||||||
|
companionEnvironmentInitializedMS: number;
|
||||||
|
appServerStartedMS: number;
|
||||||
|
developmentServerAttachedMS: number;
|
||||||
|
serverStartedMS: number;
|
||||||
|
};
|
||||||
|
|
||||||
type TrackerEvents = {
|
type TrackerEvents = {
|
||||||
|
'server-bootstrap-performance': ServerBootstrapPerformancePayload;
|
||||||
'server-started': {port: number; tcp: boolean};
|
'server-started': {port: number; tcp: boolean};
|
||||||
'server-auth-token-verification': {
|
'server-auth-token-verification': {
|
||||||
successful: boolean;
|
successful: boolean;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import {
|
|||||||
hasAuthToken,
|
hasAuthToken,
|
||||||
startFlipperServer,
|
startFlipperServer,
|
||||||
startServer,
|
startServer,
|
||||||
|
tracker,
|
||||||
} from 'flipper-server-core';
|
} from 'flipper-server-core';
|
||||||
import {isTest} from 'flipper-common';
|
import {isTest} from 'flipper-common';
|
||||||
import exitHook from 'exit-hook';
|
import exitHook from 'exit-hook';
|
||||||
@@ -155,8 +156,9 @@ async function start() {
|
|||||||
const enhanceLogger = await initializeLogger(staticPath);
|
const enhanceLogger = await initializeLogger(staticPath);
|
||||||
|
|
||||||
const t1 = performance.now();
|
const t1 = performance.now();
|
||||||
|
const loggerInitializedMS = t1 - t0;
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] Logger initialised (${t1 - t0} ms)`,
|
`[flipper-server][bootstrap] Logger initialised (${loggerInitializedMS} ms)`,
|
||||||
);
|
);
|
||||||
|
|
||||||
let keytar: any = undefined;
|
let keytar: any = undefined;
|
||||||
@@ -179,7 +181,10 @@ async function start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const t2 = performance.now();
|
const t2 = performance.now();
|
||||||
console.info(`[flipper-server][bootstrap] Keytar loaded (${t2 - t1} ms)`);
|
const keytarLoadedMS = t2 - t1;
|
||||||
|
console.info(
|
||||||
|
`[flipper-server][bootstrap] Keytar loaded (${keytarLoadedMS} ms)`,
|
||||||
|
);
|
||||||
|
|
||||||
const isProduction =
|
const isProduction =
|
||||||
process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test';
|
process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test';
|
||||||
@@ -200,10 +205,9 @@ async function start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const t3 = performance.now();
|
const t3 = performance.now();
|
||||||
|
const runningInstanceShutdownMS = t3 - t2;
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] Check for running instances completed (${
|
`[flipper-server][bootstrap] Check for running instances completed (${runningInstanceShutdownMS} ms)`,
|
||||||
t3 - t2
|
|
||||||
} ms)`,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const {app, server, socket, readyForIncomingConnections} = await startServer({
|
const {app, server, socket, readyForIncomingConnections} = await startServer({
|
||||||
@@ -214,9 +218,10 @@ async function start() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const t4 = performance.now();
|
const t4 = performance.now();
|
||||||
|
const httpServerStartedMS = t4 - t3;
|
||||||
|
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] HTTP server started (${t4 - t3} ms)`,
|
`[flipper-server][bootstrap] HTTP server started (${httpServerStartedMS} ms)`,
|
||||||
);
|
);
|
||||||
|
|
||||||
const flipperServer = await startFlipperServer(
|
const flipperServer = await startFlipperServer(
|
||||||
@@ -230,8 +235,9 @@ async function start() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const t5 = performance.now();
|
const t5 = performance.now();
|
||||||
|
const serverCreatedMS = t5 - t4;
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] FlipperServer created (${t5 - t4} ms)`,
|
`[flipper-server][bootstrap] FlipperServer created (${serverCreatedMS} ms)`,
|
||||||
);
|
);
|
||||||
|
|
||||||
exitHook(async () => {
|
exitHook(async () => {
|
||||||
@@ -245,11 +251,10 @@ async function start() {
|
|||||||
const companionEnv = await initCompanionEnv(flipperServer);
|
const companionEnv = await initCompanionEnv(flipperServer);
|
||||||
|
|
||||||
const t6 = performance.now();
|
const t6 = performance.now();
|
||||||
|
const companionEnvironmentInitializedMS = t6 - t5;
|
||||||
|
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] Companion environment initialised (${
|
`[flipper-server][bootstrap] Companion environment initialised (${companionEnvironmentInitializedMS} ms)`,
|
||||||
t6 - t5
|
|
||||||
} ms)`,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (argv.failFast) {
|
if (argv.failFast) {
|
||||||
@@ -265,8 +270,9 @@ async function start() {
|
|||||||
await flipperServer.connect();
|
await flipperServer.connect();
|
||||||
|
|
||||||
const t7 = performance.now();
|
const t7 = performance.now();
|
||||||
|
const appServerStartedMS = t7 - t6;
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] Ready for app connections (${t7 - t6} ms)`,
|
`[flipper-server][bootstrap] Ready for app connections (${appServerStartedMS} ms)`,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (argv.bundler) {
|
if (argv.bundler) {
|
||||||
@@ -274,17 +280,31 @@ async function start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const t8 = performance.now();
|
const t8 = performance.now();
|
||||||
|
const developmentServerAttachedMS = t8 - t7;
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] Development server attached (${t8 - t7} ms)`,
|
`[flipper-server][bootstrap] Development server attached (${developmentServerAttachedMS} ms)`,
|
||||||
);
|
);
|
||||||
readyForIncomingConnections(flipperServer, companionEnv);
|
readyForIncomingConnections(flipperServer, companionEnv);
|
||||||
|
|
||||||
const t9 = performance.now();
|
const t9 = performance.now();
|
||||||
|
const serverStartedMS = t9 - t8;
|
||||||
console.info(
|
console.info(
|
||||||
`[flipper-server][bootstrap] Listening at port ${chalk.green(argv.port)} (${
|
`[flipper-server][bootstrap] Listening at port ${chalk.green(
|
||||||
t9 - t8
|
argv.port,
|
||||||
} ms)`,
|
)} (${serverStartedMS} ms)`,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
tracker.track('server-bootstrap-performance', {
|
||||||
|
loggerInitializedMS,
|
||||||
|
keytarLoadedMS,
|
||||||
|
runningInstanceShutdownMS,
|
||||||
|
httpServerStartedMS,
|
||||||
|
serverCreatedMS,
|
||||||
|
companionEnvironmentInitializedMS,
|
||||||
|
appServerStartedMS,
|
||||||
|
developmentServerAttachedMS,
|
||||||
|
serverStartedMS,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function launch() {
|
async function launch() {
|
||||||
|
|||||||
Reference in New Issue
Block a user