From 3c030d70146302f995d6c23dfa13fcb43a5448d8 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 24 Feb 2020 15:12:53 -0800 Subject: [PATCH] Add extra guard on restarting TS server on fatal crash --- .../src/typescriptServiceClient.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extensions/typescript-language-features/src/typescriptServiceClient.ts b/extensions/typescript-language-features/src/typescriptServiceClient.ts index 5671d49d301..2d256281438 100644 --- a/extensions/typescript-language-features/src/typescriptServiceClient.ts +++ b/extensions/typescript-language-features/src/typescriptServiceClient.ts @@ -109,6 +109,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType private lastStart: number; private numberRestarts: number; private isRestarting: boolean = false; + private hasServerFatallyCrashedTooManyTimes = false; private readonly loadingIndicator = new ServerInitializingIndicator(); public readonly telemetryReporter: TelemetryReporter; @@ -306,7 +307,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType private token: number = 0; private startService(resendModels: boolean = false): ServerState.State { - if (this.isDisposed) { + if (this.isDisposed || this.hasServerFatallyCrashedTooManyTimes) { return ServerState.None; } @@ -542,6 +543,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType if (diff < 10 * 1000 /* 10 seconds */) { this.lastStart = Date.now(); startService = false; + this.hasServerFatallyCrashedTooManyTimes = true; prompt = vscode.window.showErrorMessage( localize('serverDiedAfterStart', 'The TypeScript language service died 5 times right after it got started. The service will not be restarted.'), {