Replies: 1 comment
|
已定位根因:一个会话日志物理格式损坏就会让 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
一个会话日志物理格式损坏时,session.list 整体返回 500,Web GUI 侧边栏全部会话消失,且无任何界面提示。
复现、预期与验收
复现步骤:
取任意一个合法会话日志 ~/.dsh/sessions///session.jsonl.zstd(多帧容器:首帧仅一行 header,后续每帧一批事件);
用外部 zstd 压缩器(如 Python zstandard)把整个日志明文重写为单个帧并覆盖原文件(例如 zstd.compress(whole_plaintext));
打开 dsh web GUI 或按 F5 刷新页面。
实际结果:
POST /api/session.list 返回 HTTP 500:handler failure: Error: corrupt Zstandard session log: first frame is not exactly one header line(来自 packages/session/session-persistence-jsonl/src/index.ts 的 assertZstdHeaderFrame);
侧边栏所有会话消失(workspace.list 正常返回会话 id,数据并未丢失);
仅在浏览器 console 出现 500,界面无任何错误提示。
预期结果:
单个会话日志不可读不应使整个列表失败:应跳过/隔离该会话并给出可见提示(或至少让错误在界面可见);
或读取器对可完整解码的单帧日志宽容兼容——该"损坏"文件内容其实可完整解码,只是容器布局不同(首帧不是恰好一行 header)。
All reactions