From 5cff7b5288a77e6851bb091642022c1314cff447 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Tue, 8 Nov 2022 01:59:53 -0800 Subject: [PATCH 1/2] Do not cache result if running an interpreter fails --- .../pythonEnvironments/base/info/environmentInfoService.ts | 3 +++ .../pythonEnvironments/common/environmentManagers/conda.ts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/pythonEnvironments/base/info/environmentInfoService.ts b/src/client/pythonEnvironments/base/info/environmentInfoService.ts index b24f86f75e07..39c7afb90702 100644 --- a/src/client/pythonEnvironments/base/info/environmentInfoService.ts +++ b/src/client/pythonEnvironments/base/info/environmentInfoService.ts @@ -102,6 +102,9 @@ class EnvironmentInfoService implements IEnvironmentInfoService { this._getEnvironmentInfo(env, priority) .then((r) => { deferred.resolve(r); + if (r === undefined) { + this.cache.delete(normCasePath(interpreterPath)); + } }) .catch((ex) => { deferred.reject(ex); diff --git a/src/client/pythonEnvironments/common/environmentManagers/conda.ts b/src/client/pythonEnvironments/common/environmentManagers/conda.ts index 7325c4cd69de..d27fffd24fc8 100644 --- a/src/client/pythonEnvironments/common/environmentManagers/conda.ts +++ b/src/client/pythonEnvironments/common/environmentManagers/conda.ts @@ -435,7 +435,7 @@ export class Conda { // eslint-disable-next-line class-methods-use-this private async getInfoImpl(command: string): Promise { const result = await exec(command, ['info', '--json'], { timeout: CONDA_GENERAL_TIMEOUT }); - traceVerbose(`conda info --json: ${result.stdout}`); + traceVerbose(`${command} info --json: ${result.stdout}`); return JSON.parse(result.stdout); } From 8935b37e8713b61b669fa787e0e8e8dace646c3a Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Tue, 8 Nov 2022 02:01:19 -0800 Subject: [PATCH 2/2] More logging --- src/client/common/variables/environmentVariablesProvider.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/common/variables/environmentVariablesProvider.ts b/src/client/common/variables/environmentVariablesProvider.ts index 0cfd6687d0c7..a6dc8ad14273 100644 --- a/src/client/common/variables/environmentVariablesProvider.ts +++ b/src/client/common/variables/environmentVariablesProvider.ts @@ -4,7 +4,7 @@ import { inject, injectable, optional } from 'inversify'; import path from 'path'; import { ConfigurationChangeEvent, Disposable, Event, EventEmitter, FileSystemWatcher, Uri } from 'vscode'; -import { traceError } from '../../logging'; +import { traceError, traceVerbose } from '../../logging'; import { sendFileCreationTelemetry } from '../../telemetry/envFileTelemetry'; import { IWorkspaceService } from '../application/types'; import { PythonSettings } from '../configSettings'; @@ -61,6 +61,7 @@ export class EnvironmentVariablesProvider implements IEnvironmentVariablesProvid } const vars = await this._getEnvironmentVariables(resource); this.setCachedEnvironmentVariables(resource, vars); + traceVerbose('Dump environment variables', JSON.stringify(vars, null, 4)); return vars; }