Skip to content

Commit 180b5b6

Browse files
authored
watcher - log correlation with events (microsoft#210534)
1 parent 9102848 commit 180b5b6

File tree

4 files changed

+36
-24
lines changed

4 files changed

+36
-24
lines changed

src/vs/platform/files/node/watcher/baseWatcher.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,16 @@ export abstract class BaseWatcher extends Disposable implements IWatcher {
231231
}
232232

233233
protected traceEvent(event: IFileChange, request: IUniversalWatchRequest): void {
234-
const traceMsg = ` >> normalized ${event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${event.resource.fsPath}`;
235-
this.trace(typeof request.correlationId === 'number' ? `${traceMsg} (correlationId: ${request.correlationId})` : traceMsg);
234+
if (this.verboseLogging) {
235+
const traceMsg = ` >> normalized ${event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${event.resource.fsPath}`;
236+
this.traceWithCorrelation(traceMsg, request);
237+
}
238+
}
239+
240+
protected traceWithCorrelation(message: string, request: IUniversalWatchRequest): void {
241+
if (this.verboseLogging) {
242+
this.trace(`${message}${typeof request.correlationId === 'number' ? ` <${request.correlationId}> ` : ``}`);
243+
}
236244
}
237245

238246
protected requestToString(request: IUniversalWatchRequest): string {
@@ -247,5 +255,10 @@ export abstract class BaseWatcher extends Disposable implements IWatcher {
247255
protected abstract warn(message: string): void;
248256

249257
abstract onDidError: Event<string>;
250-
abstract setVerboseLogging(enabled: boolean): Promise<void>;
258+
259+
protected verboseLogging = false;
260+
261+
async setVerboseLogging(enabled: boolean): Promise<void> {
262+
this.verboseLogging = enabled;
263+
}
251264
}

src/vs/platform/files/node/watcher/nodejs/nodejsWatcher.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ export class NodeJSWatcher extends BaseWatcher implements INonRecursiveWatcher {
3030

3131
readonly watchers = new Set<INodeJSWatcherInstance>();
3232

33-
private verboseLogging = false;
34-
3533
constructor(protected readonly recursiveWatcher: IRecursiveWatcherWithSubscribe | undefined) {
3634
super();
3735
}
@@ -144,8 +142,8 @@ export class NodeJSWatcher extends BaseWatcher implements INonRecursiveWatcher {
144142
return Array.from(mapCorrelationtoRequests.values()).map(requests => Array.from(requests.values())).flat();
145143
}
146144

147-
async setVerboseLogging(enabled: boolean): Promise<void> {
148-
this.verboseLogging = enabled;
145+
override async setVerboseLogging(enabled: boolean): Promise<void> {
146+
super.setVerboseLogging(enabled);
149147

150148
for (const watcher of this.watchers) {
151149
watcher.instance.setVerboseLogging(enabled);

src/vs/platform/files/node/watcher/nodejs/nodejsWatcherLib.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,9 @@ export class NodeJSFileWatcherLibrary extends Disposable {
254254
return; // ignore if already disposed
255255
}
256256

257-
this.trace(`[raw] ["${type}"] ${raw}`);
257+
if (this.verboseLogging) {
258+
this.traceWithCorrelation(`[raw] ["${type}"] ${raw}`);
259+
}
258260

259261
// Normalize file name
260262
let changedFileName = '';
@@ -447,17 +449,17 @@ export class NodeJSFileWatcherLibrary extends Disposable {
447449

448450
// Logging
449451
if (this.verboseLogging) {
450-
this.trace(`${event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${event.resource.fsPath}`);
452+
this.traceWithCorrelation(`${event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${event.resource.fsPath}`);
451453
}
452454

453455
// Add to aggregator unless excluded or not included (not if explicitly disabled)
454456
if (!skipIncludeExcludeChecks && this.excludes.some(exclude => exclude(event.resource.fsPath))) {
455457
if (this.verboseLogging) {
456-
this.trace(` >> ignored (excluded) ${event.resource.fsPath}`);
458+
this.traceWithCorrelation(` >> ignored (excluded) ${event.resource.fsPath}`);
457459
}
458460
} else if (!skipIncludeExcludeChecks && this.includes && this.includes.length > 0 && !this.includes.some(include => include(event.resource.fsPath))) {
459461
if (this.verboseLogging) {
460-
this.trace(` >> ignored (not included) ${event.resource.fsPath}`);
462+
this.traceWithCorrelation(` >> ignored (not included) ${event.resource.fsPath}`);
461463
}
462464
} else {
463465
this.fileChangesAggregator.work(event);
@@ -474,7 +476,7 @@ export class NodeJSFileWatcherLibrary extends Disposable {
474476
for (const event of coalescedFileChanges) {
475477
if (isFiltered(event, this.filter)) {
476478
if (this.verboseLogging) {
477-
this.trace(` >> ignored (filtered) ${event.resource.fsPath}`);
479+
this.traceWithCorrelation(` >> ignored (filtered) ${event.resource.fsPath}`);
478480
}
479481

480482
continue;
@@ -490,7 +492,7 @@ export class NodeJSFileWatcherLibrary extends Disposable {
490492
// Logging
491493
if (this.verboseLogging) {
492494
for (const event of filteredEvents) {
493-
this.trace(` >> normalized ${event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${event.resource.fsPath}`);
495+
this.traceWithCorrelation(` >> normalized ${event.type === FileChangeType.ADDED ? '[ADDED]' : event.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${event.resource.fsPath}`);
494496
}
495497
}
496498

@@ -546,6 +548,12 @@ export class NodeJSFileWatcherLibrary extends Disposable {
546548
}
547549
}
548550

551+
private traceWithCorrelation(message: string): void {
552+
if (!this.cts.token.isCancellationRequested && this.verboseLogging) {
553+
this.trace(`${message}${typeof this.request.correlationId === 'number' ? ` <${this.request.correlationId}> ` : ``}`);
554+
}
555+
}
556+
549557
override dispose(): void {
550558
this.cts.dispose(true);
551559

src/vs/platform/files/node/watcher/parcel/parcelWatcher.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ export class ParcelWatcher extends BaseWatcher implements IRecursiveWatcherWithS
175175
events => this._onDidChangeFile.fire(events)
176176
));
177177

178-
private verboseLogging = false;
179178
private enospcErrorLogged = false;
180179

181180
constructor() {
@@ -407,13 +406,13 @@ export class ParcelWatcher extends BaseWatcher implements IRecursiveWatcherWithS
407406
for (const { path, type: parcelEventType } of parcelEvents) {
408407
const type = ParcelWatcher.MAP_PARCEL_WATCHER_ACTION_TO_FILE_CHANGE.get(parcelEventType)!;
409408
if (this.verboseLogging) {
410-
this.trace(`${type === FileChangeType.ADDED ? '[ADDED]' : type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${path}`);
409+
this.traceWithCorrelation(`${type === FileChangeType.ADDED ? '[ADDED]' : type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${path}`, watcher.request);
411410
}
412411

413412
// Apply include filter if any
414413
if (!watcher.include(path)) {
415414
if (this.verboseLogging) {
416-
this.trace(` >> ignored (not included) ${path}`);
415+
this.traceWithCorrelation(` >> ignored (not included) ${path}`, watcher.request);
417416
}
418417
} else {
419418
events.push({ type, resource: URI.file(path), cId: watcher.request.correlationId });
@@ -540,16 +539,14 @@ export class ParcelWatcher extends BaseWatcher implements IRecursiveWatcherWithS
540539
(rootDeleted && !this.isCorrelated(watcher.request))
541540
) {
542541
if (this.verboseLogging) {
543-
this.trace(` >> ignored (filtered) ${event.resource.fsPath}`);
542+
this.traceWithCorrelation(` >> ignored (filtered) ${event.resource.fsPath}`, watcher.request);
544543
}
545544

546545
continue;
547546
}
548547

549548
// Logging
550-
if (this.verboseLogging) {
551-
this.traceEvent(event, watcher.request);
552-
}
549+
this.traceEvent(event, watcher.request);
553550

554551
filteredEvents.push(event);
555552
}
@@ -821,10 +818,6 @@ export class ParcelWatcher extends BaseWatcher implements IRecursiveWatcherWithS
821818
return undefined;
822819
}
823820

824-
async setVerboseLogging(enabled: boolean): Promise<void> {
825-
this.verboseLogging = enabled;
826-
}
827-
828821
protected trace(message: string, watcher?: ParcelWatcherInstance): void {
829822
if (this.verboseLogging) {
830823
this._onDidLogMessage.fire({ type: 'trace', message: this.toMessage(message, watcher) });

0 commit comments

Comments
 (0)