Skip to content

Commit e2e805a

Browse files
author
Kartik Raj
authored
Do not retrigger discovery on change everytime (#16164)
1 parent 24e5109 commit e2e805a

File tree

4 files changed

+6
-34
lines changed

4 files changed

+6
-34
lines changed

src/client/extensionActivation.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66
import { CodeActionKind, debug, DebugConfigurationProvider, languages, OutputChannel, window } from 'vscode';
77

88
import { registerTypes as activationRegisterTypes } from './activation/serviceRegistry';
9-
import {
10-
IExtensionActivationManager,
11-
IExtensionSingleActivationService,
12-
ILanguageServerExtension,
13-
} from './activation/types';
9+
import { IExtensionActivationManager, ILanguageServerExtension } from './activation/types';
1410
import { registerTypes as appRegisterTypes } from './application/serviceRegistry';
1511
import { IApplicationDiagnostics } from './application/types';
1612
import { DebugService } from './common/application/debugService';
@@ -36,7 +32,7 @@ import { IDebugSessionEventHandlers } from './debugger/extension/hooks/types';
3632
import { registerTypes as debugConfigurationRegisterTypes } from './debugger/extension/serviceRegistry';
3733
import { IDebugConfigurationService, IDebuggerBanner } from './debugger/extension/types';
3834
import { registerTypes as formattersRegisterTypes } from './formatters/serviceRegistry';
39-
import { IComponentAdapter, IInterpreterService } from './interpreter/contracts';
35+
import { IInterpreterService } from './interpreter/contracts';
4036
import { getLanguageConfiguration } from './language/languageConfiguration';
4137
import { LinterCommands } from './linters/linterCommands';
4238
import { registerTypes as lintersRegisterTypes } from './linters/serviceRegistry';
@@ -153,11 +149,6 @@ async function activateLegacy(ext: ExtensionState): Promise<ActivationResult> {
153149

154150
// "initialize" "services"
155151

156-
// There's a bug now due to which IExtensionSingleActivationService is only activated in background.
157-
// However for some cases particularly IComponentAdapter we need to block on activation before rest
158-
// of the extension is activated. Hence explicitly activate it for now.
159-
await serviceContainer.get<IExtensionSingleActivationService>(IComponentAdapter).activate();
160-
161152
const interpreterManager = serviceContainer.get<IInterpreterService>(IInterpreterService);
162153
interpreterManager.initialize();
163154

src/client/pythonEnvironments/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ export async function initialize(ext: ExtensionState): Promise<PythonEnvironment
4949
ext.legacyIOC.serviceManager,
5050
api,
5151
environmentsSecurity,
52-
ext.disposables,
5352
);
5453
// Deal with legacy IOC.
5554
await registerLegacyDiscoveryForIOC(ext.legacyIOC.serviceManager);

src/client/pythonEnvironments/legacyIOC.ts

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44
import { injectable } from 'inversify';
55
import { intersection } from 'lodash';
66
import * as vscode from 'vscode';
7-
import { IExtensionSingleActivationService } from '../activation/types';
87
import { DiscoveryVariants } from '../common/experiments/groups';
98
import { traceError } from '../common/logger';
109
import { FileChangeType } from '../common/platform/fileSystemWatcher';
11-
import { IDisposableRegistry, Resource } from '../common/types';
10+
import { Resource } from '../common/types';
1211
import {
1312
CONDA_ENV_FILE_SERVICE,
1413
CONDA_ENV_SERVICE,
@@ -69,6 +68,7 @@ import { EnvironmentType, PythonEnvironment } from './info';
6968
import { EnvironmentsSecurity, IEnvironmentsSecurity } from './security';
7069
import { toSemverLikeVersion } from './base/info/pythonVersion';
7170
import { PythonVersion } from './info/pythonVersion';
71+
import { IExtensionSingleActivationService } from '../activation/types';
7272

7373
const convertedKinds = new Map(
7474
Object.entries({
@@ -136,7 +136,7 @@ export async function isComponentEnabled(): Promise<boolean> {
136136
interface IPythonEnvironments extends ILocator {}
137137

138138
@injectable()
139-
class ComponentAdapter implements IComponentAdapter, IExtensionSingleActivationService {
139+
class ComponentAdapter implements IComponentAdapter {
140140
private readonly refreshing = new vscode.EventEmitter<void>();
141141

142142
private readonly refreshed = new vscode.EventEmitter<void>();
@@ -147,23 +147,8 @@ class ComponentAdapter implements IComponentAdapter, IExtensionSingleActivationS
147147
// The adapter only wraps one thing: the component API.
148148
private readonly api: IPythonEnvironments,
149149
private readonly environmentsSecurity: IEnvironmentsSecurity,
150-
private readonly disposables: IDisposableRegistry,
151150
) {}
152151

153-
public async activate(): Promise<void> {
154-
this.disposables.push(
155-
this.api.onChanged((e) => {
156-
const query = {
157-
kinds: e.kind ? [e.kind] : undefined,
158-
searchLocations: e.searchLocation ? { roots: [e.searchLocation] } : undefined,
159-
ignoreCache: true,
160-
};
161-
// Trigger a background refresh of the environments.
162-
getEnvs(this.api.iterEnvs(query)).ignoreErrors();
163-
}),
164-
);
165-
}
166-
167152
// For use in VirtualEnvironmentPrompt.activate()
168153

169154
// Call callback if an environment gets created within the resource provided.
@@ -437,11 +422,9 @@ export function registerNewDiscoveryForIOC(
437422
serviceManager: IServiceManager,
438423
api: IPythonEnvironments,
439424
environmentsSecurity: EnvironmentsSecurity,
440-
disposables: IDisposableRegistry,
441425
): void {
442426
serviceManager.addSingletonInstance<IComponentAdapter>(
443427
IComponentAdapter,
444-
new ComponentAdapter(api, environmentsSecurity, disposables),
428+
new ComponentAdapter(api, environmentsSecurity),
445429
);
446-
serviceManager.addBinding(IComponentAdapter, IExtensionSingleActivationService);
447430
}

src/test/pythonEnvironments/legacyIOC.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export async function registerForIOC(
2222
serviceManager,
2323
instance(mock(PythonEnvironments)),
2424
instance(mock(EnvironmentsSecurity)),
25-
[],
2625
);
2726
await registerLegacyDiscoveryForIOC(serviceManager);
2827
}

0 commit comments

Comments
 (0)