Skip to content

datasource pool 声明在 memory 驱动臂同样被静默丢弃(#5714 的姊妹臂,裁决未覆盖) #5931

Description

@hotlong

发现于 #5714(sqlite / sqlite-wasm 臂静默丢 pool)的实现工作,与该 PR 的裁决范围无关,单独记录。

事实

createDefaultDatasourceDriverFactorymemory 臂只把 buildMemoryConfig(spec) 传给 InMemoryDriver,spec.pool 从未被读取:

  • packages/services/service-datasource/src/default-datasource-driver-factory.ts — memory 分支(现 :449-452)只传 buildMemoryConfig(spec),而该函数(:273-278)只读 spec.config,不碰 spec.pool
  • InMemoryDriver 根本没有连接池概念 —— 与 sqlite 臂"驱动自己决定连接策略"是同一形状,只是更彻底:这里没有任何东西可以承接 pool

实测(worktree,#5714 分支的临时探针,通过工厂真实构造)

memory + pool{min:3,max:9}   driver config = {"persistence":false}   pool = undefined
sqlite + pool{min:3,max:9}   knex.client.config.pool = {"createTimeoutMillis":15000}   live pool = {"min":1,"max":1}
postgres + pool{min:3,max:9} knex config.pool = {"min":3,"max":9}     live pool = {"min":3,"max":9}

为什么单独记录而不是顺手修

#5714 的维护者裁决(2026-08-06,裁 B)明确把响亮拒绝的范围定在 sqlite / sqlite-wasm 两臂:"公开 authoring 面收紧已获维护者授权"是对那个集合授权的。把 memory 加进拒绝集合是再一次收紧公开 authoring 面,属于超出裁决的契约决策,按纪律必须回到分诊而不是由实现方自己扩。

因此 #5714 的 PR 里,POOL_UNSUPPORTED_DRIVER_IDS 只含 sqlite / sqlite-wasm,并在模块注释里指名本单 —— 让下一个读者看到这是已知且被刻意划界的洞,而不是漏看。

仓内标本

未发现:driver: 'memory' 的 9 处声明没有一处带 pool。所以这是"可写、会被静默吞掉"的 authoring 面缺陷,不是今天有人正在踩的线上问题 —— 严重度请分诊定。

候选修向

Blocked-by: #5714(拒绝 helper 与其 API 由该 PR 落地;本单只需扩集合 + 消息)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions