From dd4ce3734b5a5341fab694eeade05a1a0b37b876 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Wed, 8 Sep 2021 19:28:31 -0700 Subject: [PATCH] Correctly indicate if a refresh has finished --- .../composite/envsCollectionService.ts | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts b/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts index 64760cec9b46..54887ce732fa 100644 --- a/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts +++ b/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts @@ -86,20 +86,25 @@ export class EnvsCollectionService extends PythonEnvsWatcher { - this.refreshPromises.delete(query); - sendTelemetryEvent(EventName.PYTHON_INTERPRETER_DISCOVERY, stopWatch.elapsedTime, { - interpreters: this.cache.getAllEnvs().length, - }); - }); + const deferred = createDeferred(); + // Ensure we set this before we trigger the promise to correctly indicate when a refresh has started. + this.refreshPromises.set(query, deferred.promise); + const promise = this.addEnvsToCacheFromIterator(iterator); + return promise + .then(async () => { + deferred.resolve(); + this.refreshPromises.delete(query); + sendTelemetryEvent(EventName.PYTHON_INTERPRETER_DISCOVERY, stopWatch.elapsedTime, { + interpreters: this.cache.getAllEnvs().length, + }); + }) + .catch((ex) => deferred.reject(ex)); } private async addEnvsToCacheFromIterator(iterator: IPythonEnvsIterator) { const seen: PythonEnvInfo[] = []; const state = { - done: true, + done: false, pending: 0, }; const updatesDone = createDeferred();