Refactor browser connection performance tracking
Reviewed By: lblasa Differential Revision: D51158256 fbshipit-source-id: 17e020dd3c26ac73bf2cf0ceb4c664638c6778e9
This commit is contained in:
committed by
Facebook GitHub Bot
parent
54217f2c79
commit
d54bd7c3ba
@@ -168,6 +168,7 @@ export type FlipperServerEvents = {
|
|||||||
'plugins-server-add-on-message': ExecuteMessage;
|
'plugins-server-add-on-message': ExecuteMessage;
|
||||||
'download-file-update': DownloadFileUpdate;
|
'download-file-update': DownloadFileUpdate;
|
||||||
'server-log': LoggerInfo;
|
'server-log': LoggerInfo;
|
||||||
|
'browser-connection-created': {};
|
||||||
};
|
};
|
||||||
|
|
||||||
export type OS =
|
export type OS =
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import {
|
|||||||
} from 'flipper-server-companion';
|
} from 'flipper-server-companion';
|
||||||
import {URLSearchParams} from 'url';
|
import {URLSearchParams} from 'url';
|
||||||
import {tracker} from '../tracker';
|
import {tracker} from '../tracker';
|
||||||
import {performance} from 'perf_hooks';
|
|
||||||
import {getFlipperServerConfig} from '../FlipperServerConfig';
|
import {getFlipperServerConfig} from '../FlipperServerConfig';
|
||||||
|
|
||||||
const safe = (f: () => void) => {
|
const safe = (f: () => void) => {
|
||||||
@@ -53,14 +52,6 @@ export function attachSocketServer(
|
|||||||
server: FlipperServerImpl,
|
server: FlipperServerImpl,
|
||||||
companionEnv: FlipperServerCompanionEnv,
|
companionEnv: FlipperServerCompanionEnv,
|
||||||
) {
|
) {
|
||||||
const t0 = performance.now();
|
|
||||||
const browserConnectionTimeout = setTimeout(() => {
|
|
||||||
tracker.track('browser-connection-created', {
|
|
||||||
successful: false,
|
|
||||||
timeMS: performance.now() - t0,
|
|
||||||
});
|
|
||||||
}, 20000);
|
|
||||||
|
|
||||||
socket.on('connection', (client, req) => {
|
socket.on('connection', (client, req) => {
|
||||||
const clientAddress =
|
const clientAddress =
|
||||||
(req.socket.remoteAddress &&
|
(req.socket.remoteAddress &&
|
||||||
@@ -74,11 +65,7 @@ export function attachSocketServer(
|
|||||||
clearTimeout(disconnectTimeout);
|
clearTimeout(disconnectTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
clearTimeout(browserConnectionTimeout);
|
server.emit('browser-connection-created', {});
|
||||||
tracker.track('browser-connection-created', {
|
|
||||||
successful: true,
|
|
||||||
timeMS: performance.now() - t0,
|
|
||||||
});
|
|
||||||
|
|
||||||
let connected = true;
|
let connected = true;
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ type TrackerEvents = {
|
|||||||
'browser-connection-created': {
|
'browser-connection-created': {
|
||||||
successful: boolean;
|
successful: boolean;
|
||||||
timeMS: number;
|
timeMS: number;
|
||||||
|
timedOut: boolean;
|
||||||
};
|
};
|
||||||
'app-connection-created': AppConnectionPayload;
|
'app-connection-created': AppConnectionPayload;
|
||||||
'app-connection-secure-attempt': AppConnectionPayload;
|
'app-connection-secure-attempt': AppConnectionPayload;
|
||||||
|
|||||||
@@ -95,9 +95,25 @@ const rootPath = argv.bundler
|
|||||||
: path.resolve(__dirname, '..'); // In pre-packaged versions of the server, static is copied inside the package.
|
: path.resolve(__dirname, '..'); // In pre-packaged versions of the server, static is copied inside the package.
|
||||||
const staticPath = path.join(rootPath, 'static');
|
const staticPath = path.join(rootPath, 'static');
|
||||||
|
|
||||||
async function start() {
|
const t0 = performance.now();
|
||||||
const t0 = performance.now();
|
|
||||||
|
|
||||||
|
const browserConnectionTimeout = setTimeout(() => {
|
||||||
|
tracker.track('browser-connection-created', {
|
||||||
|
successful: false,
|
||||||
|
timeMS: performance.now() - t0,
|
||||||
|
timedOut: true,
|
||||||
|
});
|
||||||
|
}, 10000);
|
||||||
|
const reportBrowserConnection = (successful: boolean) => {
|
||||||
|
clearTimeout(browserConnectionTimeout);
|
||||||
|
tracker.track('browser-connection-created', {
|
||||||
|
successful,
|
||||||
|
timeMS: performance.now() - t0,
|
||||||
|
timedOut: false,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
async function start() {
|
||||||
const isProduction =
|
const isProduction =
|
||||||
process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test';
|
process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test';
|
||||||
const environmentInfo = await getEnvironmentInfo(
|
const environmentInfo = await getEnvironmentInfo(
|
||||||
@@ -206,6 +222,10 @@ async function start() {
|
|||||||
environmentInfo,
|
environmentInfo,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
flipperServer.once('browser-connection-created', () => {
|
||||||
|
reportBrowserConnection(true);
|
||||||
|
});
|
||||||
|
|
||||||
const t5 = performance.now();
|
const t5 = performance.now();
|
||||||
const serverCreatedMS = t5 - t4;
|
const serverCreatedMS = t5 - t4;
|
||||||
console.info(
|
console.info(
|
||||||
@@ -311,6 +331,7 @@ process.on('uncaughtException', (error) => {
|
|||||||
'[flipper-server] uncaught exception, process will exit.',
|
'[flipper-server] uncaught exception, process will exit.',
|
||||||
error,
|
error,
|
||||||
);
|
);
|
||||||
|
reportBrowserConnection(false);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -325,5 +346,6 @@ process.on('unhandledRejection', (reason, promise) => {
|
|||||||
|
|
||||||
start().catch((e) => {
|
start().catch((e) => {
|
||||||
console.error(chalk.red('Server startup error: '), e);
|
console.error(chalk.red('Server startup error: '), e);
|
||||||
|
reportBrowserConnection(false);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user