缺陷 / 高 / LLM 适配器
electron/harness/adapters/base-adapter.ts
getFetchSignal 创建 AbortSignal + setTimeout 实现超时控制:
private getFetchSignal(timeoutMs: number): AbortSignal { const controller = new AbortController(); setTimeout(() => controller.abort(), timeoutMs); return controller.signal; }
问题:
private async fetchWithTimeout(url: string, init: RequestInit, timeoutMs: number) { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), timeoutMs); try { // 合并外部 signal 与超时 signal const externalSignal = init.signal; if (externalSignal) { if (externalSignal.aborted) controller.abort(); else externalSignal.addEventListener('abort', () => controller.abort()); } return await fetch(url, { ...init, signal: controller.signal }); } finally { clearTimeout(timer); // 关键:清理 timer } }
确保所有调用 getFetchSignal 的地方都最终清理 timer。
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 高 / LLM 适配器
文件位置
electron/harness/adapters/base-adapter.ts问题描述
getFetchSignal 创建 AbortSignal + setTimeout 实现超时控制:
问题:
影响
建议修复
确保所有调用 getFetchSignal 的地方都最终清理 timer。