Skip to content

🐛 fix(chroma): 修复部分版本 v2 无 databases 列表端点导致连接打不开 - #1557

Merged
AutumnNazi merged 1 commit into
Syngnat:devfrom
AutumnNazi:dev-chroma-v2-databases-fallback
Oct 21, 2026
Merged

AutumnNazi merged 1 commit into
Syngnat:devfrom
AutumnNazi:dev-chroma-v2-databases-fallback

Conversation

@AutumnNazi

Copy link
Copy Markdown
Collaborator

背景

部分 Chroma 版本的 v2 只提供 databases 的 POST(创建),对 GET 返回 405 Method Not Allowed:

Chroma API GET /api/v2/tenants/default_tenant/databases 失败:{"detail":"Method Not Allowed"}

GetDatabases 因此直接失败,展开连接时报错,整个连接都打不开,表概览也无从进入。

变更点

  • chroma_impl_http.go:新增 chromaHTTPError,在 doJSON 的非 2xx 分支携带响应状态码;Error() 文案与原实现完全一致,不改变既有错误信息的可读性
  • chroma_impl_db.go:GetDatabases 用 errors.As 取到状态码,仅当 405 时退回单库模式([c.database],与 v1 分支行为一致),并写一条 warn 日志说明降级原因
  • 其余失败(503、网络中断等)仍原样向上传播

这里刻意不对所有失败降级:仓库已有用例 TestChromaGetDatabasesV2PropagatesHTTPFailure 明确要求服务端故障必须传播错误,把「服务不可用」伪装成「只有一个库」属于静默失败。

影响范围

  • 仅影响 Chroma 的 GetDatabases,其余 API 调用路径不变
  • 405 之外的错误行为完全不变
  • 未触及前端、i18n 与其他驱动

验证

go test -tags gonavi_full_drivers ./internal/db/ -run Chroma -count=1
ok   GoNavi-Wails/internal/db

TestChromaGetDatabasesAndTablesV2                          PASS  (正常列库)
TestChromaGetDatabasesV2PropagatesHTTPFailure              PASS  (503 仍传播)
TestChromaGetDatabasesV2FallsBackWhenListEndpointUnsupported PASS (405 降级)

新增用例 TestChromaGetDatabasesV2FallsBackWhenListEndpointUnsupported 已做反向验证:把判断改成别的状态码后该用例失败,报错与线上一致(Chroma API GET /api/v2/tenants/default_tenant/databases 失败:Method Not Allowed)。

go vet -tags gonavi_full_drivers ./internal/db/ 干净。

说明:./internal/db/ 全量跑存在 10 个 DuckDB / ClickHouse 存量失败用例,stash 掉本改动后同样失败,与本次修改无关。

部分 Chroma 版本的 v2 只提供 databases 的 POST(创建),对 GET 返回 405,
展开连接时 GetDatabases 直接失败,整个连接都打不开、表概览也无从进入。

给 doJSON 增加携带状态码的 chromaHTTPError,GetDatabases 仅对 405 退回单库模式
(与 v1 分支行为一致);503、网络中断等服务端故障仍向上传播,不把「服务不可用」
伪装成「只有一个库」。
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

变更概览

  • 变更规模:3 个文件,+46 / -1(小型变更)
  • 测试行占比:47%(测试 +22 / 源码 +24)
  • 规约扫描覆盖:52%(逐行扫描 24 / 新增 46,测试与生成文件只做文件级检查)
  • 规约命中:需要处理 0 · 建议 0
  • 模型评审:groq · openai/gpt-oss-120b

模型评审

未发现缺陷

CI 门禁

  • CI Gate:成功
    • Frontend clean build:成功
    • Full backend suite:成功
    • Platform-sensitive tests (macos-latest):成功
    • Platform-sensitive tests (windows-latest):成功

门禁已通过。

规约意见不会代替 CI 门禁。这条评论会在后续推送和测试完成后更新。

@AutumnNazi
AutumnNazi merged commit 8495036 into Syngnat:dev Oct 21, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant