From 58c66a626d292a76c9782152aa20819cde1049f1 Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Fri, 21 Jun 2019 06:29:53 -0700 Subject: [PATCH] Track time for exports Summary: This sometimes take *A LONG* time for me, so I want to know if I'm an outlier or not. Reviewed By: jknoxville Differential Revision: D15939147 fbshipit-source-id: 9ebd3914efdd537eeadd49e522397acc97a6ff9c --- src/App.js | 6 +++++- src/chrome/ShareSheetExportFile.js | 17 +++++++++++++---- src/utils/exportData.js | 1 - 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/App.js b/src/App.js index 2030980e7..fa6d915a7 100644 --- a/src/App.js +++ b/src/App.js @@ -83,7 +83,11 @@ export class App extends React.Component { return ; case ACTIVE_SHEET_SHARE_DATA_IN_FILE: return ( - + ); case ACTIVE_SHEET_PLUGIN_SHEET: // Currently unused. diff --git a/src/chrome/ShareSheetExportFile.js b/src/chrome/ShareSheetExportFile.js index 2abcccdfb..7ec491e2f 100644 --- a/src/chrome/ShareSheetExportFile.js +++ b/src/chrome/ShareSheetExportFile.js @@ -16,6 +16,9 @@ import { Spacer, } from 'flipper'; import {reportPlatformFailures} from '../utils/metrics'; +// $FlowFixMe: Missing type defs for node built-in. +import {performance} from 'perf_hooks'; +import type {Logger} from '../fb-interfaces/Logger.js'; import { exportStoreToFile, EXPORT_FLIPPER_TRACE_EVENT, @@ -66,6 +69,7 @@ const Padder = styled('div')( type Props = { onHide: () => mixed, file: ?string, + logger: Logger, }; type State = { errorArray: Array, @@ -86,18 +90,23 @@ export default class ShareSheetExportFile extends Component { }; async componentDidMount() { - if (!this.props.file) { - return; - } - + const mark = 'shareSheetExportFile'; + performance.mark(mark); try { + // Flow doesn't allow us to check for this earlier because `performance` is untyped + // and could presumably do anything. + if (!this.props.file) { + return; + } const {errorArray} = await reportPlatformFailures( exportStoreToFile(this.props.file, this.context.store), `${EXPORT_FLIPPER_TRACE_EVENT}:UI_FILE`, ); this.setState({errorArray, result: {success: true, error: null}}); + this.props.logger.trackTimeSince(mark, 'export:file-success'); } catch (err) { this.setState({errorArray: [], result: {success: false, error: err}}); + this.props.logger.trackTimeSince(mark, 'export:file-error'); } } diff --git a/src/utils/exportData.js b/src/utils/exportData.js index c743d5c79..37b15cfbe 100644 --- a/src/utils/exportData.js +++ b/src/utils/exportData.js @@ -25,7 +25,6 @@ import {readCurrentRevision} from './packageMetadata.js'; import {tryCatchReportPlatformFailures} from './metrics'; import {promisify} from 'util'; import promiseTimeout from './promiseTimeout'; -import type {State} from '../reducers'; export const IMPORT_FLIPPER_TRACE_EVENT = 'import-flipper-trace'; export const EXPORT_FLIPPER_TRACE_EVENT = 'export-flipper-trace';