From 95a65227207641b991b293acc9688182f215ea93 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 25 Mar 2024 18:12:57 -0700 Subject: [PATCH] Improve error handling and logging in background execution and extension activation --- .../api/kernels/backgroundExecution.ts | 9 +++++++-- src/standalone/chat/extesnion.ts | 20 ++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/standalone/api/kernels/backgroundExecution.ts b/src/standalone/api/kernels/backgroundExecution.ts index cfa0a7ee7d4..97b9a6cae18 100644 --- a/src/standalone/api/kernels/backgroundExecution.ts +++ b/src/standalone/api/kernels/backgroundExecution.ts @@ -55,7 +55,7 @@ del __jupyter_exec_background__ disposables.add(token.onCancellationRequested(() => disposables.dispose())); const promise = raceCancellation( token, - new Promise((resolve) => { + new Promise((resolve, reject) => { disposables.add( api.onDidReceiveDisplayUpdate(async (output) => { if (token.isCancellationRequested) { @@ -69,7 +69,12 @@ del __jupyter_exec_background__ if (!result) { return; } - return resolve(JSON.parse(new TextDecoder().decode(result.data)) as T); + + try { + return resolve(JSON.parse(new TextDecoder().decode(result.data)) as T); + } catch (ex) { + return reject(new Error('Failed to parse the result', ex)); + } }) ); }) diff --git a/src/standalone/chat/extesnion.ts b/src/standalone/chat/extesnion.ts index b33222933fd..ae9320f75de 100644 --- a/src/standalone/chat/extesnion.ts +++ b/src/standalone/chat/extesnion.ts @@ -8,6 +8,7 @@ import { execCodeInBackgroundThread } from '../api/kernels/backgroundExecution'; import { ServiceContainer } from '../../platform/ioc/container'; import { IControllerRegistration } from '../../notebooks/controllers/types'; import { JupyterVariablesProvider } from '../../kernels/variables/JupyterVariablesProvider'; +import { traceWarning } from '../../platform/logging'; export async function activate(context: vscode.ExtensionContext): Promise { context.subscriptions.push( @@ -23,8 +24,9 @@ export async function activate(context: vscode.ExtensionContext): Promise if (Array.isArray(result.content)) { return result.content; } - } catch (_) { + } catch (ex) { // ignore + traceWarning('Failed to get pip packages', ex); } } } @@ -85,12 +87,16 @@ stdout, stderr = proc.communicate() return stdout `.split('\n'); - const content = await execCodeInBackgroundThread( - kernel, - codeToExecute, - token - ); - return { content } as KernelMessage.IInspectReplyMsg; + try { + const content = await execCodeInBackgroundThread( + kernel, + codeToExecute, + token + ); + return { content } as KernelMessage.IInspectReplyMsg; + } catch (ex) { + throw ex; + } } // eslint-disable-next-line @typescript-eslint/no-empty-function