hook up unhandled extension errors with extension telemetry (#163424)

* hook up unhandled extension errors with extension telemetry

* fix layering

* forward unhandled language provider errors to extension telemetry loggers
This commit is contained in:
Johannes Rieken
2022-10-13 15:04:08 +02:00
committed by GitHub
parent 17c7a08962
commit 0dd2dc89d2
7 changed files with 110 additions and 65 deletions

View File

@@ -34,6 +34,7 @@ import { StopWatch } from 'vs/base/common/stopwatch';
import { isCancellationError, NotImplementedError } from 'vs/base/common/errors';
import { raceCancellationError } from 'vs/base/common/async';
import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
import { IExtHostTelemetry } from 'vs/workbench/api/common/extHostTelemetry';
// --- adapter
@@ -1831,31 +1832,20 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
private static _handlePool: number = 0;
private readonly _uriTransformer: IURITransformer;
private readonly _proxy: extHostProtocol.MainThreadLanguageFeaturesShape;
private readonly _documents: ExtHostDocuments;
private readonly _commands: ExtHostCommands;
private readonly _diagnostics: ExtHostDiagnostics;
private readonly _adapter = new Map<number, AdapterData>();
private readonly _logService: ILogService;
private readonly _apiDeprecation: IExtHostApiDeprecationService;
constructor(
mainContext: extHostProtocol.IMainContext,
uriTransformer: IURITransformer,
documents: ExtHostDocuments,
commands: ExtHostCommands,
diagnostics: ExtHostDiagnostics,
logService: ILogService,
apiDeprecationService: IExtHostApiDeprecationService,
private readonly _uriTransformer: IURITransformer,
private readonly _documents: ExtHostDocuments,
private readonly _commands: ExtHostCommands,
private readonly _diagnostics: ExtHostDiagnostics,
private readonly _logService: ILogService,
private readonly _apiDeprecation: IExtHostApiDeprecationService,
private readonly _extensionTelemetry: IExtHostTelemetry
) {
this._uriTransformer = uriTransformer;
this._proxy = mainContext.getProxy(extHostProtocol.MainContext.MainThreadLanguageFeatures);
this._documents = documents;
this._commands = commands;
this._diagnostics = diagnostics;
this._logService = logService;
this._apiDeprecation = apiDeprecationService;
}
private _transformDocumentSelector(selector: vscode.DocumentSelector): Array<extHostProtocol.IDocumentFilterDto> {
@@ -1898,6 +1888,8 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
if (!isCancellationError(err)) {
this._logService.error(`[${data.extension.identifier.value}] provider FAILED`);
this._logService.error(err);
this._extensionTelemetry.onExtensionError(data.extension.identifier, err);
}
}).finally(() => {
if (!doNotLog) {