@@ -39,7 +39,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
39
39
private progressPromises = new Map < ProgressReportStage , Deferred < void > > ( ) ;
40
40
41
41
/** 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 > ( ) ;
43
43
44
44
private readonly progress = new EventEmitter < ProgressNotificationEvent > ( ) ;
45
45
@@ -102,13 +102,12 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
102
102
103
103
public triggerRefresh ( query ?: PythonLocatorQuery , options ?: TriggerRefreshOptions ) : Promise < void > {
104
104
const stopWatch = new StopWatch ( ) ;
105
- if ( options ?. ifNotTriggerredAlready ) {
106
- if ( this . wasRefreshTriggered ( query ) ) {
107
- return Promise . resolve ( ) ; // Refresh was already triggered, return.
108
- }
109
- }
110
105
let refreshPromise = this . getRefreshPromiseForQuery ( query ) ;
111
106
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
+ }
112
111
refreshPromise = this . startRefresh ( query , options ) ;
113
112
}
114
113
return refreshPromise . then ( ( ) => this . sendTelemetry ( query , stopWatch ) ) ;
@@ -191,8 +190,8 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
191
190
return this . refreshesPerQuery . get ( query ) ?. promise ?? this . refreshesPerQuery . get ( undefined ) ?. promise ;
192
191
}
193
192
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 ) ;
196
195
}
197
196
198
197
/**
@@ -245,7 +244,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
245
244
}
246
245
247
246
private sendTelemetry ( query : PythonLocatorQuery | undefined , stopWatch : StopWatch ) {
248
- if ( ! query && ! this . wasRefreshTriggered ( query ) ) {
247
+ if ( ! query && ! this . hasRefreshFinished ( query ) ) {
249
248
// Intent is to capture time taken for discovery of all envs to complete the first time.
250
249
sendTelemetryEvent ( EventName . PYTHON_INTERPRETER_DISCOVERY , stopWatch . elapsedTime , {
251
250
interpreters : this . cache . getAllEnvs ( ) . length ,
@@ -254,6 +253,6 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
254
253
. filter ( ( e ) => getEnvPath ( e . executable . filename , e . location ) . pathType === 'envFolderPath' ) . length ,
255
254
} ) ;
256
255
}
257
- this . wasRefreshTriggeredForQuery . set ( query , true ) ;
256
+ this . hasRefreshFinishedForQuery . set ( query , true ) ;
258
257
}
259
258
}
0 commit comments