Skip to content

Commit a63dd9e

Browse files
author
Kartik Raj
authored
Trigger refresh when using Select Interpreter command if no envs were found previously (#19361)
Trigger refresh when using Select Interpreter command if no envs were found previously
1 parent 1ffa23a commit a63dd9e

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

src/client/pythonEnvironments/base/locator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ export type TriggerRefreshOptions = {
199199
*/
200200
clearCache?: boolean;
201201
/**
202-
* Only trigger a refresh if it hasn't already been triggered for this session.
202+
* Only trigger a refresh if it hasn't already been triggered for this session, or if no envs were found previously.
203203
*/
204204
ifNotTriggerredAlready?: boolean;
205205
};

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

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
3939
private progressPromises = new Map<ProgressReportStage, Deferred<void>>();
4040

4141
/** Keeps track of whether a refresh has been triggered for various queries. */
42-
private wasRefreshTriggeredForQuery = new Map<PythonLocatorQuery | undefined, boolean>();
42+
private hasRefreshFinishedForQuery = new Map<PythonLocatorQuery | undefined, boolean>();
4343

4444
private readonly progress = new EventEmitter<ProgressNotificationEvent>();
4545

@@ -102,13 +102,12 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
102102

103103
public triggerRefresh(query?: PythonLocatorQuery, options?: TriggerRefreshOptions): Promise<void> {
104104
const stopWatch = new StopWatch();
105-
if (options?.ifNotTriggerredAlready) {
106-
if (this.wasRefreshTriggered(query)) {
107-
return Promise.resolve(); // Refresh was already triggered, return.
108-
}
109-
}
110105
let refreshPromise = this.getRefreshPromiseForQuery(query);
111106
if (!refreshPromise) {
107+
if (options?.ifNotTriggerredAlready && this.hasRefreshFinished(query) && this.getEnvs().length) {
108+
// Do not trigger another refresh if a refresh has previously finished and envs were found.
109+
return Promise.resolve();
110+
}
112111
refreshPromise = this.startRefresh(query, options);
113112
}
114113
return refreshPromise.then(() => this.sendTelemetry(query, stopWatch));
@@ -191,8 +190,8 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
191190
return this.refreshesPerQuery.get(query)?.promise ?? this.refreshesPerQuery.get(undefined)?.promise;
192191
}
193192

194-
private wasRefreshTriggered(query?: PythonLocatorQuery) {
195-
return this.wasRefreshTriggeredForQuery.get(query) ?? this.wasRefreshTriggeredForQuery.get(undefined);
193+
private hasRefreshFinished(query?: PythonLocatorQuery) {
194+
return this.hasRefreshFinishedForQuery.get(query) ?? this.hasRefreshFinishedForQuery.get(undefined);
196195
}
197196

198197
/**
@@ -245,7 +244,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
245244
}
246245

247246
private sendTelemetry(query: PythonLocatorQuery | undefined, stopWatch: StopWatch) {
248-
if (!query && !this.wasRefreshTriggered(query)) {
247+
if (!query && !this.hasRefreshFinished(query)) {
249248
// Intent is to capture time taken for discovery of all envs to complete the first time.
250249
sendTelemetryEvent(EventName.PYTHON_INTERPRETER_DISCOVERY, stopWatch.elapsedTime, {
251250
interpreters: this.cache.getAllEnvs().length,
@@ -254,6 +253,6 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
254253
.filter((e) => getEnvPath(e.executable.filename, e.location).pathType === 'envFolderPath').length,
255254
});
256255
}
257-
this.wasRefreshTriggeredForQuery.set(query, true);
256+
this.hasRefreshFinishedForQuery.set(query, true);
258257
}
259258
}

0 commit comments

Comments
 (0)