Repository navigation
feat(logging): 接入 litheLogging 1 结构化诊断 - #2
Merged
Merged
Conversation
- Rust SDK 改为仓库内 vendor 副本(基线 lithe-plugin-docs 29b245c 加本轮日志改动), scripts/verify-sdk-source.mjs 按逐文件 SHA-256 校验,CI 与打包都会先跑 - 工作区加载、历史读写、DBX 预览等高频成功不再记 INFO;database.call 对元数据、 浏览与探测类 method 只抑制当前调用的成功事实,失败照常 ERROR - 查询结果超过上限被裁剪时,每个后端生命周期只报一次 WARN(result_size_limited) - 移除对旧 SDK NOT_NEGOTIATED 常量的分支;启动失败不再向 stderr 打印 - e2e 改为显式 --source/--ref,CI 指向宿主 preview,并断言每次调用恰好一条 类型化终态事实(通道、级别、operation)
This was referenced Nov 4, 2026
xiaoyumuxi
marked this pull request as ready for review
November 4, 2026 10:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
数据库插件后端接入结构化日志 v2:改用支持
litheLogging1 的官方 Rust SDK,由 SDK 自动上报每次调用的成功/失败终态,插件只补充“结果被裁剪”这一条降级事实;高频的浏览、元数据和探测调用不再产生 INFO。诊断事实由宿主 Core 校验后写入plugins/<id>/host,不含 SQL、连接信息、路径或行数据。依赖:
litheLogging协议、目录事件、lithe/log校验)SDK 来源:从 git 依赖改为 vendor 源码快照
backend/Cargo.toml的lithe-plugin-sdk从 gitrev = 5da0524…改为path = "../vendor/lithe-plugin-sdk";backend/Cargo.lock只删除了对应的 git source 行。vendor/lithe-plugin-sdk/:Cargo.toml、LICENSE(Apache-2.0)、src/{backend,diagnostics,error,framing,host,lib,panic_boundary,protocol,stdio}.rs。基线是 lithe-plugin-docs29b245c0e1d77c761d9032a3144a301d1818bfc7,加上 SDK PR #17 的日志改动。vendor/lithe-plugin-sdk/source-provenance.json记录真实基线 commit、哪些文件带本地改动,以及逐文件 SHA-256。这不是已发布的 SDK 版本,也没有伪造 git revision。scripts/verify-sdk-source.mjs:按来源记录逐文件校验,拒绝漂移、遗漏或多余文件。CI 新增 “Verify SDK source provenance” 步骤,scripts/package.mjs打包前也会先跑。诊断行为(
backend/crates/backend/src/service.rs)workspace.load、history.list、history.append、connections.previewDBX。失败照常 ERROR。database.call一个入口同时承载显式查询和 UI 浏览,所以按真实method只抑制当前调用的成功事实:checkWriteProtection、describeTable、diagnostics、listDatabases、listForeignKeys、listIndexes、listObjects、listTables、pageTable、nacosGetConfig、nacosListConfigs、nacosListInstances、nacosListServices、redisGetKey、redisScan。查询、写入和连接测试仍记 INFO;这些调用的失败和降级照常上报。sizeLimited)时上报degraded(<函数 ID>, "result_size_limited"),每个后端生命周期只报一次(AtomicBool),重复的大结果不会刷屏。失败调用由 SDK 记录,不会重复记一次。NOT_NEGOTIATED错误码的分支:新 SDK 没有这个常量,plugin.host.*的映射不变。main.rs:协议通道建立前(listen之前)的启动失败不再eprintln!,直接以退出码结束,由宿主的进程生命周期记录,避免出现第二个 stderr 写入方。端到端测试与 CI
scripts/e2e.mjs改为必须显式传--source和--ref:新 SDK 要求 Core 支持litheLogging1,原来e2e/lithe-core.json固定的旧 commit 已不满足。e2e/database_plugin.rs:每次调用后读取diagnostics.drainCoreEvents,断言恰好一条类型化终态事实,并核对通道plugins/<id>/host、级别(成功 INFO,失败 ERROR)、operation和 op 关联;被抑制的调用不应出现成功事实。.github/workflows/ci.yml与release.yml的 e2e 改为--source https://github.com/1lck/Lithe-IDEA.git --ref preview。验证
backend/目录,与 CI 一致):cargo fmt --all -- --check、cargo clippy --locked --all-targets -- -D warnings通过;cargo test --locked20 + 22 项通过;node scripts/verify-sdk-source.mjs通过。result_size_limited,SQL 失败记 ERROR,Core 中的 INFO/WARN/ERROR 级别和 op 关联正确;日志里没有 SQL、路径或行数据。预期的 CI 状态与合并顺序
preview之前,CI 和 release 的 e2e 会因 Core 不支持litheLogging1 而失败,这是预期结果。contract/v1)→ 本 PR。发布前把vendor/lithe-plugin-sdk/重新固定到 SDK #17 合并后的 commit,并更新source-provenance.json。限制
配套 PR: