From ebee7c62be8c1b9b01fa0898ae79bd3ce8fdbe1c Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Thu, 14 Sep 2017 15:35:47 -0700 Subject: [PATCH 1/2] Only decrement activeRequestCount on SetTypings responses InvalidateCache responses are triggered by file watchers, rather than by requests. --- src/server/server.ts | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index 0552d86e7a0..9ff42da83f8 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -428,23 +428,25 @@ namespace ts.server { return; } - if (this.activeRequestCount > 0) { - this.activeRequestCount--; - } - else { - Debug.fail("Received too many responses"); - } - - while (this.requestQueue.length > 0) { - const queuedRequest = this.requestQueue.shift(); - if (this.requestMap.get(queuedRequest.operationId) === queuedRequest) { - this.requestMap.delete(queuedRequest.operationId); - this.scheduleRequest(queuedRequest); - break; + if (response.kind === ActionSet) { + if (this.activeRequestCount > 0) { + this.activeRequestCount--; + } + else { + Debug.fail("Received too many responses"); } - if (this.logger.hasLevel(LogLevel.verbose)) { - this.logger.info(`Skipping defunct request for: ${queuedRequest.operationId}`); + while (this.requestQueue.length > 0) { + const queuedRequest = this.requestQueue.shift(); + if (this.requestMap.get(queuedRequest.operationId) === queuedRequest) { + this.requestMap.delete(queuedRequest.operationId); + this.scheduleRequest(queuedRequest); + break; + } + + if (this.logger.hasLevel(LogLevel.verbose)) { + this.logger.info(`Skipping defunct request for: ${queuedRequest.operationId}`); + } } } From 6ad8adcdfeb95b12900108439f8e0b671390e32e Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 15 Sep 2017 15:34:24 -0700 Subject: [PATCH 2/2] Drop Debug.fail ...from `release-2.5`. I'm not 100% confident it won't be hit and we'll recover if we do. It's still in master, so dogfooding should flush out any remaining issues before 2.6. --- src/server/server.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index 9ff42da83f8..87a9b8ac0b7 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -432,9 +432,6 @@ namespace ts.server { if (this.activeRequestCount > 0) { this.activeRequestCount--; } - else { - Debug.fail("Received too many responses"); - } while (this.requestQueue.length > 0) { const queuedRequest = this.requestQueue.shift();