Files
ElyOffice/tasks/reviews/R2.20-r1.md
T

2.1 KiB
Raw Blame History

FAIL

crates/ely-lok/src/worker/slides.rs:59 — 单个图层仍整体装进一帧,逐层回复仍会触发 64 MiB 帧上限,违反 SHOW-09 的动画预览要求。具体复现:真实 worker 打开测试 DECK,执行 slide.size(10000, 120000, true),得到界面允许的 10 × 120 cm 页面;按 apps/ely-show/src/preview.rs:67 的尺寸公式请求 SLIDE_LAYERS(doc, 0, 1280, 15360),返回两个有像素的图层,每层 78,643,200 字节;首个 SLIDE_LAYER 返回 ERR:a 78643204 byte frame is over the 67108864 byte cap,客户端在 client/doc.rs:193 提前返回,预览失败。另以普通比例请求 6000 × 4500,内核实际返回 6000 × 3375,同样报 81,000,004 字节帧超限。修复方向:单层像素也按帧容量分块传输,计入长度前缀,并增加单层超过上限的回归用例。独立执行的 worker 构建、4 项 motion 测试、3 项 playlist 测试及注释检查均通过,现有新增测试覆盖的是总量超过上限、各单层仍小于上限的情况。复现日志:/tmp/ely-r220-portrait.log、/tmp/ely-r220-probe.log。

crates/ely-lok/src/worker/slides.rs:41 — 新增的 WAITING 暂存集合缺少文档关闭和取层失败时的清理,违反 LOK-10 的关闭资源释放要求。具体复现:上述合法长页面取首层失败后,客户端通过 ? 退出,第二层的 78,643,200 字节仍留在 WAITING;发送 CLOSE_DOC 后,再按旧文档编号取第二层,仍得到同一超限错误,证明关闭后像素仍被持有。另以 1920 × 1080 请求图层后直接关闭文档,再发旧编号的 SLIDE_LAYER,实际返回 OK 和 8,294,404 字节,确认暂存数据跨越文档生命周期。worker.rs:343 的 close 仅清理文档、事件和 revision,WAITING 只在逐层取尽时移除;连续打开、预览失败、关闭会按每次遗留一层持续累积内存。修复方向:把暂存图层纳入文档生命周期,在关闭及取回失败或取消时释放整批数据,拒绝已关闭会话的取层请求,并覆盖失败后关闭的回归路径。复现日志:/tmp/ely-r220-portrait.log、/tmp/ely-r220-probe.log。