![[Bug]: Infinite loop vectorization of the same file](https://www.chat-gpts.plus/wp-content/uploads/2026/07/13327-db66c79b.jpg)
[Bug]: Infinite loop vectorization of the same file
快速结论:此问题在 RAGFlow 向量化任务执行时出现,表现为 Web UI 上显示的 “正在处理” 文件与后端服务日志实际处理文件不一致,且可能反复处理同一文件。优先排查 Redis 任务队列是否堆积,并重启 ragflow_server 恢复同步。
问题场景
在 RAGFlow v0.23.1 版本中运行文档向量化(parse + chunk + embedding)任务时触发。
报错原文
页面显示的处理文件,跟服务实际处理的文件不一致
服务日志显示重复处理同一文件(Infinite loop vectorization of the same file)
注:日志未输出显式 Error,但前端 /document/list 轮询展示状态与后端实际 Task 进度脱节。
原因分析
这是一个已知的 UI/状态同步 bug。根本原因在于 update_progress 机制使用 RedisDistributedLock 和 ThreadPoolExecutor,当文档被重新处理或任务队列出现竞争时,状态更新未能正确传播到前端。前端每 5 秒轮询 /document/list 并以 document 为单位展示进度,但后端实际跟踪的是 task ID,当多个 task 重叠或锁竞争时,UI 显示的仍是旧任务的进度,造成用户看到 “无限循环处理同一文件” 的假象。
环境排查
- RAGFlow 镜像版本:
swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.23.1(r0.23.1) - GitHub workspace commit ID:对应 v0.23.1 tag
- 数据库类型:确认使用的是 MySQL(而非 MariaDB),因为 MariaDB 在部分版本中会导致解析进度显示异常
- Redis 任务队列:检查是否有堆积或未清理的旧 task
解决步骤
- 重启 ragflow_server(可优先尝试):此操作通常能即刻恢复前后端进度同步。
- 清理 Redis 任务队列:清除 Redis 中可能残留的旧 vectorization task,防止新任务被错误复用旧锁。
- 确认数据库为 MySQL 而非 MariaDB:如果当前使用 MariaDB,建议迁移至 MySQL,或升级到 v0.17.2 之后的版本(v0.23.1 已包含部分修复,但此 bug 仍存在)。
- 升级 RAGFlow:部分 progress display 相关 bug 在 v0.17.2 之后已有修复,可尝试更新到更新的版本。
验证方法
重启 ragflow_server 或清理 Redis 队列后,重新提交一个文档进行向量化,观察 Web 页面显示的 “正在处理” 文件是否与服务日志中实际处理的文件名一致,且不再重复处理同一文件。



