3.1 KiB
v0.2.1 生产加固方案
核心原则
- 所有新增测试方法必须确保不会导致 CI 卡死(无 setTimeout/setInterval 泄漏,无 fake-indexeddb 滥用,无无限循环)
- 优先级 P0 → P1 → P2 顺序执行
P0 — Critical(4项)
-
Memory 引擎事务回滚修复 —
src/engine/memory.ts的事务快照机制已存在但 TransactionManager 未正确调用。修复src/transaction/index.ts在 rollback 时调用引擎层 rollback。 -
WAL CRC 校验验证 —
src/engine/aria/wal/log.tsdecodeAllRecords 跳过 CRC,恢复时验证 CRC 不匹配则丢弃 + 告警。 -
Hybrid 引擎提交顺序 —
src/hybrid/index.tscommit 先写磁盘再写内存,磁盘失败回滚内存。 -
SSTableReader rangeScan 边界条件 — 修复多 block 场景下 startBlockIdx/endBlockIdx 可能越界。
P1 — High(6项)
-
ColumnDef 约束激活 —
src/table/schema.tscheckFieldType 中激活 min/max/maxLength 校验。配套新增 schema 测试(纯同步,不会卡死)。 -
查询结果上限 —
DatabaseConfig增加maxRowsPerQuery默认 10000,所有引擎 find() 中截断。测试用 memory 引擎(纯同步)。 -
onError回调接入 —src/core.tsCRUD 操作 catch 块调用this.config.onError。测试用 jest.fn() 验证(同步断言)。 -
OPFS 引擎基础测试 — 补 5 个测试:open/close、createTable、insert、find、count。由于 OPFS 浏览器专属,测试用内存 fallback mock 方式,避免 jsdom 不具备 OPFS 导致卡死。
-
MVCC gc() 定期调用 — AriaEngine
checkpointManager.tick()后每 N 次 op 调用一次 gc()。测试用 MVCC 单元测试(纯同步)。 -
SSTable
get()返回 null 兜底 — 已修复(P0-4包含)
P2 — Medium(6项)
-
LZ4 压缩修复 + 正确性测试 — 修复 compress/decompress 往返 bug,补 3 个往返正确性测试。注意:测试数据量控制在 500 字节以内,避免大循环。纯同步测试。
-
debug 模式 —
DatabaseConfig加debug: boolean,console.debug 输出关键操作日志。 -
RESTRICT 外键行为修正 — cascadeDelete 检测到引用行时抛
FOREIGN_KEY_VIOLATION而非静默保留孤儿。 -
浏览器兼容表 — README 补充 Chrome 80+/Firefox 80+/Safari 14+/Edge 80+ 支持声明。
-
React/Vue 集成去 @ts-nocheck — 移除注释,补充完整类型声明。(测试仅验证编译不验证运行时,避免 jsdom 缺失 hooks 导致卡死)
-
SQL 多语句防护 — Parser 检测到多余分号后还有有效 token 时报
PARSE_ERROR。
严禁事项(新增测试必须遵守)
- ❌ 不使用
setTimeout/setInterval除非配合jest.useFakeTimers() - ❌ 不使用
fake-indexeddb进行多轮 open/close/reopen - ❌ 不创建 IndexedDB 连接后不关闭
- ❌ 不使用
done()回调模式 - ❌ 不对大数据集(>1000条)做 O(n²) 操作
- ✅ 优先使用 async/await + Memory Backend
- ✅ Mock 代替真实浏览器 API
- ✅ 每个 afterEach 确保资源清理