Skip to content

Commit b06313c

Browse files
author
Kartik Raj
authored
Correctly indicate when a refresh has finished (microsoft#17335)
1 parent 6582970 commit b06313c

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,20 +86,25 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
8686
const stopWatch = new StopWatch();
8787
this.refreshStarted.fire();
8888
const iterator = this.locator.iterEnvs(query);
89-
const refreshPromiseForQuery = this.addEnvsToCacheFromIterator(iterator);
90-
this.refreshPromises.set(query, refreshPromiseForQuery);
91-
return refreshPromiseForQuery.then(async () => {
92-
this.refreshPromises.delete(query);
93-
sendTelemetryEvent(EventName.PYTHON_INTERPRETER_DISCOVERY, stopWatch.elapsedTime, {
94-
interpreters: this.cache.getAllEnvs().length,
95-
});
96-
});
89+
const deferred = createDeferred<void>();
90+
// Ensure we set this before we trigger the promise to correctly indicate when a refresh has started.
91+
this.refreshPromises.set(query, deferred.promise);
92+
const promise = this.addEnvsToCacheFromIterator(iterator);
93+
return promise
94+
.then(async () => {
95+
deferred.resolve();
96+
this.refreshPromises.delete(query);
97+
sendTelemetryEvent(EventName.PYTHON_INTERPRETER_DISCOVERY, stopWatch.elapsedTime, {
98+
interpreters: this.cache.getAllEnvs().length,
99+
});
100+
})
101+
.catch((ex) => deferred.reject(ex));
97102
}
98103

99104
private async addEnvsToCacheFromIterator(iterator: IPythonEnvsIterator) {
100105
const seen: PythonEnvInfo[] = [];
101106
const state = {
102-
done: true,
107+
done: false,
103108
pending: 0,
104109
};
105110
const updatesDone = createDeferred<void>();

0 commit comments

Comments
 (0)