🔴 [H10] Loading 状态下忽略文件变更事件 #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
文件:
tui/app.rs:839-919分类: 状态机 / 并发
问题:
handle_file_appended和handle_file_truncated仅在Ready状态响应。如果文件在 Loading 期间被修改,索引完成后用的是过期快照。建议修复: Loading 状态下收到文件变更事件应取消/重启加载。
已修复 ✅
提交:
534a089fix(tui): defer file-change events during Loading state to prevent stale reader修复方案:延迟重载标记
在
App中新增reload_after_loading: bool标志位:handle_file_appended/handle_file_truncated改为显式三分支 match:Ready→ 正常处理Loading→ 设置reload_after_loading = truepoll_background_indexer的IndexerMessage::Complete分支:Loading→Ready 转换完成后检查 flag,触发reload_ready_reader()全量重载IndexerMessage::Error分支清除 flag 防止残留提取
reload_ready_reader()私有方法(从handle_file_truncatedReady 分支抽取),避免语义耦合回归测试(4 个)
test_append_during_loading_sets_reload_flagtest_truncate_during_loading_sets_reload_flagtest_multiple_events_during_loading_collapse_to_single_reloadtest_indexer_error_clears_reload_flag全部 92 个测试通过,0 失败。