fix: v0.6.1 生产可用性深度审查 — MemoryEngine 级联环无限递归(P0)/ KVStore 多表事务与级联原子化 / 未open防护统一 / 27 个异常场景测试 + aria级联回归
CI / test (18.x) (push) Successful in 10m59s
CI / test (20.x) (push) Successful in 10m59s
CI / test (22.x) (push) Successful in 10m49s
CI / test (24.x) (push) Successful in 10m47s
CI / e2e (push) Successful in 10m4s

This commit is contained in:
thzxx
2026-08-10 14:29:40 +08:00
parent a9e1a281d3
commit 8a78f27f7d
15 changed files with 954 additions and 227 deletions
+44
View File
@@ -2,6 +2,50 @@
All notable changes to MetonaSqlark will be documented in this file.
## [0.6.1] - 2026-08-10
### 生产可用性深度审查(异常场景)
> 以"生产可用"标准全面审查:修复级联环无限递归、多表事务原子性缺口、
> 统一未 open 防护,并新增 27 个异常场景测试。
### Fixed
- **MemoryEngine 级联环无限递归(P0** — A→B→A 循环引用 + CASCADE 删除导致栈溢出
RangeError: Maximum call stack size exceeded)—— MemoryEngine.cascadeDelete 无环路保护,
AriaEngine 已有 visited 保护(v0.4.1),Memory 侧缺失。新增 visited 集合(表:主键),
与 Aria 语义对齐;A→B→A 环 + 深链 A→B→C→D 均有回归测试
- **KVStore 快照损坏水位 bugP0** — baseSeq = max(metaSeq, snapshotSeq) 在快照损坏
回退全量日志重放时,meta.seq(最后一次 checkpoint 水位)错误跳过日志中 checkpoint 后
的有效记录 → 静默丢数据。水位只信任快照内嵌 seq
- **多表事务 commit 非原子(P1** — 事务 commit 逐表 flush:中途失败/崩溃 → 部分表已提交。
重构为全部 dirty 表合并单次 putMany/deleteMany(一条日志记录 = 真原子)
- **级联更新/删除非原子(P1)** — update 主键变更/delete 的级联影响表逐表 diff 分多次写。
重构 collectTableDiff 合并到单次原子写(主表 + 全部级联表同一条日志记录)
- **未 open 防护不一致** — getTableNames/hasTable/getTableSchema 未检查 DB_NOT_OPEN
(返回空而非报错,与其余方法不一致)。统一 ensureOpen
- **测试盲区** — 快照损坏测试此前篡改未生效(close 后介质不可读),从未真正覆盖损坏路径;
修复并新增 metaSeq 超前回归测试
### Added
- 27 个生产异常场景测试(`tests/production-abnormal.test.ts`):
- KVStore 边界:空 value/空 key、1MB 大 value、中文/emoji/冒号/超长 key、未 open、
重复 open/close 幂等、clear 后写、1 万小 key、写失败后继续可用
- KVStoreEngine:未 open 全操作、重复 close、不存在表、事务嵌套 TX_ACTIVE、
无事务 TX_NONE、commit 失败回滚(磁盘无部分提交)、多表事务原子性、级联环、
深链级联、主键变更+索引一致性、空表操作、5000 行批量删除持久化
- SharedMemoryBackend 全分支:append 拼接、writeMany/deleteMany、close 后安全、跨实例共享
- 日志解析损坏分支:onCorrupt false 停止、keyLen 越界记录丢弃
- AriaEngine 级联环/深链回归测试(与 Memory 对齐)
### Changed
- 测试 1022 → **1049**(65 套件);行覆盖率 89.15% → **89.33%**
- 事务/级联写入路径:逐表 flush → 单条日志记录原子(性能与一致性双提升)
---
## [0.6.0] - 2026-08-10
### 里程碑:完全移除 IndexedDB,自研 KV 事务存储引擎