v1.3.11 — infinity ready 探针 + 单例池 lock 释放
bug 修复
bug A — infinity warmup 期间用户点重建被阻断
装机后 infinity 子进程 warmup 需要 30-60 秒才 LISTEN,期间用户立刻点托盘"重建向量索引",会因 strict 模式第一条 chunk embedding connection refused 而立即终止,旧索引备份同时被抹掉。
修复:
rebuild_runner.start前置 embedding 就绪探针(默认 HTTP/health2s 超时)- 探针失败抛
EmbeddingNotReady,runner 不进 RUNNING / 不备份 / 不置 maintenance - 接口 catch 转 503 + Retry-After: 5,菜单栏 App
case 503弹「请等 banner ready」明确提示
bug B — PUT /v1/system/config 后旧 VectorIndex 不释放 qdrant 锁
mode / model 切换触发 _invalidate_repo_singletons 后,旧 VectorIndex 仍持有 qdrant_local 的 portalocker 文件锁,新 VectorIndex 在同进程内 QdrantClient(path=...) 拿锁失败 → 静默 enabled=False 退化为关键词检索,用户感知不到向量索引已坏。
修复:
- repo 单例池从
lru_cache改成dict + Lock,invalidate 时遍历旧实例vector_index.pause()释放锁 _repo_singleton_*.cache_clear保留作为指向 invalidate 的 shim,既有测试无需改
测试覆盖
- 新增单测 8 个(rebuild_runner probe + 单例池 invalidate),全过
- 全套测试 412/413(唯一 fail 是与本次无关的预存 skill_sync drift)
- 装机端到端验证:1.3.11 dmg 装机后立刻点重建 → 503 友好提示;等 ready 再点 → 408 chunk rebuild 完成 + 完成通知;问答 query 真走 infinity
/embeddings200
下载
- macOS:
KnowledgeBase-mac-direct-1.3.11.dmg(53MB,Apple Silicon / Intel 通用)