Skip to content

driver-memory 测试面替代:项目内测试后端迁到 sqlite :memory:(#5499 重启条件 · memory 半边,维护者 2026-08-06 立项) #5704

Description

@os-zhuang

立项依据:#5499 裁决原文「driver-memory 是早期为测试便利设计的组件,方向已定为 sqlite 内存模式替代……替代迁移若立项,在本单登记排期」+ 维护者 2026-08-06 在 PM 会话确认(「driver-memory 在项目内的测试应该被替换为 sqlite 的内存模式」)。完成即触发 #5499 的 memory 侧重启条件:名下 5 张挂起缺陷单(#5433/#5440/#5442/#5444/#5354)整批关闭(not planned),包本体的退役决策另行交维护者。

mongodb 侧不在本单:维护者同日确认 mongodb 维持暂停。

实测消费面(origin/main @ 2026-08-06 01:2x Z)

测试文件引用 driver-memory / MemoryDriver(外部,共 41 个文件 / 9 包):

文件数 备注
packages/objectql 22 主力面。⚠️ 实测无共享工厂:各文件自带 makeMemoryDriver() 本地定义(22 处),其中部分是手写同形 stub(如注释 "same shape driver-memory uses, small enough to assert against"),并非全部真依赖包 — 逐文件分诊是第一步
packages/runtime 5
packages/rest 3
packages/plugins/plugin-approvals 3
packages/spec 2
packages/services/service-datasource 2
packages/cli 2
packages/triggers/trigger-record-change 1
packages/qa/dogfood 1

package.json 依赖声明:cli、plugin-dev、qa/dogfood、runtime、service-datasource、examples/embed-objectql(+包自身)。

⛔ 明确不在本单范围(它们不是「测试」,归包退役决策):runtime provisioning 偏好序里的 memory 注册名回退(http-dispatcher)、plugin-dev 的开发默认后端、examples/embed-objectql(该示例的主题就是内嵌 memory driver)、driver-memory 自己的 15 个测试文件。

替代目标

@objectstack/driver-sql + better-sqlite3 :memory:(examples/app-crm、app-showcase 与 cli db clean 已采用的同款形态,#5499 事实核查确认)。

阶段结构

  1. Survey(先行,单独一单):41 个文件逐个分诊为三类 —— ① 真依赖包、直接可换 sqlite;② 本地手写 stub、与包无关(只需摘 import 或原样保留);③ 断言了 memory 特有语义的 pin(换后端会红 — 每处红都是真语义分叉,按「以 SQL 族语义为准」定向改写断言,拿不准的单独列出)。产出逐文件处置表,作为后续各包迁移单的输入。
  2. 按包迁移 sub-issue(file-disjoint,可并行;domain:* 按落点包由分诊补):objectql 一单(最重),runtime+rest 一单,其余小包合批或独立由 survey 结果定。
  3. 收口:41 文件清零后回 [裁决] driver-memory / driver-mongodb 投入冻结 —— 维护者 2026-08-05 口径(跨单锚点) #5499 执行重启条件(5 张 on-hold 批量关闭 + 请维护者裁包本体退役)。

风险如实声明

排期登记与本单互链见 #5499 评论。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions