Skip to content

Commit

Permalink
perf logger to _startupPerfLogger in metro-file-map
Browse files Browse the repository at this point in the history
Summary:
Rename perf logger in metro-file-map to startupFileMapPerfLogger

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D40346849

fbshipit-source-id: f744a54f88229d76f5de1d3f067aaf596aec0738
  • Loading branch information
jacdebug authored and facebook-github-bot committed Oct 26, 2022
1 parent 8a21beb commit e483674
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 27 deletions.
4 changes: 2 additions & 2 deletions packages/metro-file-map/src/flow-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
import type HasteFS from './HasteFS';
import type ModuleMap from './ModuleMap';
import type {Stats} from 'graceful-fs';
import type {PerfLogger} from 'metro-config';
import type {PerfLoggerFactory, PerfLogger} from 'metro-config';

export type {PerfLogger};
export type {PerfLoggerFactory, PerfLogger};

// These inputs affect the internal data collected for a given filesystem
// state, and changes may invalidate a cache.
Expand Down
52 changes: 28 additions & 24 deletions packages/metro-file-map/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import type {
ModuleMapItem,
ModuleMetaData,
Path,
PerfLoggerFactory,
PerfLogger,
SerializableModuleMap,
WorkerMetadata,
Expand Down Expand Up @@ -85,7 +86,7 @@ export type InputOptions = $ReadOnly<{
dependencyExtractor?: ?string,
hasteImplModulePath?: ?string,

perfLogger?: ?PerfLogger,
perfLoggerFactory?: ?PerfLoggerFactory,
resetCache?: ?boolean,
maxWorkers: number,
throwOnModuleCollision?: ?boolean,
Expand All @@ -108,7 +109,7 @@ type HealthCheckOptions = $ReadOnly<{
type InternalOptions = {
...BuildParameters,
healthCheck: HealthCheckOptions,
perfLogger: ?PerfLogger,
perfLoggerFactory: ?PerfLoggerFactory,
resetCache: ?boolean,
maxWorkers: number,
throwOnModuleCollision: boolean,
Expand Down Expand Up @@ -240,18 +241,22 @@ export default class HasteMap extends EventEmitter {
_cacheManager: CacheManager;
_crawlerAbortController: typeof AbortController;
_healthCheckInterval: ?IntervalID;
_startupPerfLogger: ?PerfLogger;

static create(options: InputOptions): HasteMap {
return new HasteMap(options);
}

// $FlowFixMe[missing-local-annot]
constructor(options: InputOptions) {
if (options.perfLogger) {
options.perfLogger?.point('constructor_start');
}
super();

if (options.perfLoggerFactory) {
this._startupPerfLogger =
options.perfLoggerFactory?.().subSpan('hasteMap') ?? null;
this._startupPerfLogger?.point('constructor_start');
}

// Add VCS_DIRECTORIES to provided ignorePattern
let ignorePattern;
if (options.ignorePattern) {
Expand Down Expand Up @@ -298,7 +303,7 @@ export default class HasteMap extends EventEmitter {
...buildParameters,
healthCheck: options.healthCheck,
maxWorkers: options.maxWorkers,
perfLogger: options.perfLogger,
perfLoggerFactory: options.perfLoggerFactory,
resetCache: options.resetCache,
throwOnModuleCollision: !!options.throwOnModuleCollision,
useWatchman: options.useWatchman == null ? true : options.useWatchman,
Expand All @@ -323,7 +328,7 @@ export default class HasteMap extends EventEmitter {

this._buildPromise = null;
this._worker = null;
this._options.perfLogger?.point('constructor_end');
this._startupPerfLogger?.point('constructor_end');
this._crawlerAbortController = new AbortController();
}

Expand Down Expand Up @@ -354,7 +359,7 @@ export default class HasteMap extends EventEmitter {
}

build(): Promise<InternalDataObject> {
this._options.perfLogger?.point('build_start');
this._startupPerfLogger?.point('build_start');
if (!this._buildPromise) {
this._buildPromise = (async () => {
const data = await this._buildFileMap();
Expand Down Expand Up @@ -397,7 +402,7 @@ export default class HasteMap extends EventEmitter {
})();
}
return this._buildPromise.then(result => {
this._options.perfLogger?.point('build_end');
this._startupPerfLogger?.point('build_end');
return result;
});
}
Expand All @@ -408,20 +413,20 @@ export default class HasteMap extends EventEmitter {
async read(): Promise<InternalData> {
let data: ?InternalData;

this._options.perfLogger?.point('read_start');
this._startupPerfLogger?.point('read_start');
try {
data = await this._cacheManager.read();
} catch (e) {
this._console.warn(
'Error while reading cache, falling back to a full crawl:\n',
e,
);
this._options.perfLogger?.annotate({
this._startupPerfLogger?.annotate({
string: {cacheReadError: e.toString()},
});
}
data = data ?? this._createEmptyMap();
this._options.perfLogger?.point('read_end');
this._startupPerfLogger?.point('read_end');

return data;
}
Expand All @@ -445,7 +450,7 @@ export default class HasteMap extends EventEmitter {
hasteMap: InternalData,
}> {
let hasteMap: InternalData;
this._options.perfLogger?.point('buildFileMap_start');
this._startupPerfLogger?.point('buildFileMap_start');
try {
hasteMap =
this._options.resetCache === true
Expand All @@ -461,7 +466,6 @@ export default class HasteMap extends EventEmitter {
extensions,
forceNodeFilesystemAPI,
ignorePattern,
perfLogger,
roots,
rootDir,
watch,
Expand All @@ -479,7 +483,7 @@ export default class HasteMap extends EventEmitter {
ignore: path => this._ignore(path),
ignorePattern,
initialData: hasteMap,
perfLogger,
perfLogger: this._startupPerfLogger,
roots,
rootDir,
useWatchman: await this._shouldUseWatchman(),
Expand All @@ -488,7 +492,7 @@ export default class HasteMap extends EventEmitter {
});

return this._watcher.crawl().then(result => {
this._options.perfLogger?.point('buildFileMap_end');
this._startupPerfLogger?.point('buildFileMap_end');
return result;
});
}
Expand Down Expand Up @@ -724,7 +728,7 @@ export default class HasteMap extends EventEmitter {
changedFiles?: FileData,
hasteMap: InternalData,
}): Promise<InternalData> {
this._options.perfLogger?.point('buildHasteMap_start');
this._startupPerfLogger?.point('buildHasteMap_start');
const {removedFiles, changedFiles, hasteMap} = data;

// If any files were removed or we did not track what files changed, process
Expand Down Expand Up @@ -770,7 +774,7 @@ export default class HasteMap extends EventEmitter {
this._cleanup();
hasteMap.map = map;
hasteMap.mocks = mocks;
this._options.perfLogger?.point('buildHasteMap_end');
this._startupPerfLogger?.point('buildHasteMap_end');
return hasteMap;
},
error => {
Expand All @@ -795,10 +799,10 @@ export default class HasteMap extends EventEmitter {
* 4. serialize the new `HasteMap` in a cache file.
*/
async _persist(hasteMap: InternalData, changed: FileData, removed: FileData) {
this._options.perfLogger?.point('persist_start');
this._startupPerfLogger?.point('persist_start');
const snapshot = deepCloneInternalData(hasteMap);
await this._cacheManager.write(snapshot, {changed, removed});
this._options.perfLogger?.point('persist_end');
this._startupPerfLogger?.point('persist_end');
}

/**
Expand All @@ -824,9 +828,9 @@ export default class HasteMap extends EventEmitter {
* Watch mode
*/
async _watch(hasteMap: InternalData): Promise<void> {
this._options.perfLogger?.point('watch_start');
this._startupPerfLogger?.point('watch_start');
if (!this._options.watch) {
this._options.perfLogger?.point('watch_end');
this._startupPerfLogger?.point('watch_end');
return;
}

Expand Down Expand Up @@ -1026,7 +1030,7 @@ export default class HasteMap extends EventEmitter {
this._options.healthCheck.interval,
);
}
this._options.perfLogger?.point('watch_end');
this._startupPerfLogger?.point('watch_end');
}

/**
Expand Down Expand Up @@ -1129,7 +1133,7 @@ export default class HasteMap extends EventEmitter {
.catch(e => {
// TODO: Advise people to either install Watchman or set
// `useWatchman: false` here?
this._options.perfLogger?.annotate({
this._startupPerfLogger?.annotate({
string: {
watchmanFailedCapabilityCheck: e?.message ?? '[missing]',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ function createHasteMap(
config.fileMapCacheDirectory ?? config.hasteMapCacheDirectory,
cacheFilePrefix: options?.cacheFilePrefix,
})),
perfLogger: config.unstable_perfLogger?.().subSpan('hasteMap') ?? null,
perfLoggerFactory: config.unstable_perfLogger,
computeDependencies,
computeSha1: true,
dependencyExtractor: config.resolver.dependencyExtractor,
Expand Down

0 comments on commit e483674

Please sign in to comment.