Skip to content

fix(conversation): prevent duplicate conversation creation under weak network#1975

Merged
piorpua merged 1 commit intomainfrom
fix/issue-1609
Mar 31, 2026
Merged

fix(conversation): prevent duplicate conversation creation under weak network#1975
piorpua merged 1 commit intomainfrom
fix/issue-1609

Conversation

@kaizhou-lab
Copy link
Copy Markdown
Collaborator

Summary

  • Add ref-based concurrency guard to handleCreateConversation in ConversationTabs.tsx and _AddNewConversation in ChatConversation.tsx
  • Prevents multiple simultaneous IPC calls when users rapidly click "new conversation" under slow/unstable network conditions (WebUI remote access)
  • Also refactors _AddNewConversation to use async/await with proper error handling

Related Issues

Closes #1609

Test Plan

  • Unit tests for concurrency guard pattern (4 tests)
  • Type check passes
  • Lint and format pass

… network

Add ref-based concurrency guard to conversation creation handlers to
prevent multiple simultaneous IPC calls when users rapidly click under
slow/unstable network conditions (WebUI remote access).

Closes #1609
@piorpua
Copy link
Copy Markdown
Contributor

piorpua commented Mar 31, 2026

Code Review:fix(conversation): prevent duplicate conversation creation under weak network (#1975)

变更概述

本 PR 在 ConversationTabs.tsxhandleCreateConversationChatConversation.tsx_AddNewConversation 中添加了基于 useRef 的并发守卫,防止弱网环境下用户快速点击"新建会话"按钮时触发多次 IPC 调用导致重复创建会话。同时将 _AddNewConversation.then()/.catch() 链重构为 async/await + try/catch/finally,提升可读性。新增了 4 个单元测试覆盖并发守卫模式。


方案评估

结论:✅ 方案合理

使用 useRef 作为并发守卫是 React 中防止重复异步操作的标准模式——不触发重渲染,语义清晰,且通过 finally 确保守卫在成功和失败时都能正确释放。方案与项目现有架构一致,没有引入不必要的复杂度。async/await 重构使错误处理路径更清晰。测试通过提取等价 hook 验证守卫逻辑,覆盖了单次调用、并发阻塞、错误恢复和快速连击四个场景,设计合理。


问题清单

未发现 CRITICAL、HIGH 或 MEDIUM 级别问题。


汇总

# 严重级别 文件 问题
未发现阻塞性问题

结论

批准合并 — 方案正确,实现干净,守卫模式通过 finally 确保释放,测试覆盖充分,无阻塞性问题。


本报告由本地 pr-review skill 生成,包含完整项目上下文,无截断限制。

CONCLUSION: APPROVED
IS_CRITICAL_PATH: false
PR_NUMBER: 1975

@piorpua
Copy link
Copy Markdown
Contributor

piorpua commented Mar 31, 2026

✅ 已自动 review,无阻塞性问题,正在触发自动合并。

@piorpua piorpua merged commit 35b1e7d into main Mar 31, 2026
17 checks passed
@piorpua piorpua deleted the fix/issue-1609 branch March 31, 2026 06:07
@piorpua piorpua added bot:done Auto-merged by bot and removed bot:reviewing Review in progress (mutex) labels Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:done Auto-merged by bot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] webUI 远程访问弱网环境下点击请求积压与空白标签页生成问题

2 participants