You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
finding(objectql): reap 的每轮上限是「按 (对象, where 作用域)」计的 —— N 个租户覆写把一轮的实际预算变成 (N+1) × 10000 行 #5756
观察类 finding,来自 #5194 / PR #5753 的实现。今天没有用户会撞到,记录在案由 PM 定级。
事实(
origin/main+ PR #5753)REAP_BATCH_SIZE (500) × REAP_MAX_BATCHES_PER_SWEEP (20)的注释说的是「bound one sweep's work」。实际上这个预算是在batchedReap()一次调用内计的,而reap()在有租户覆写时会多次调用它(lifecycle-service.ts:1128起):maxAge/expireAfter覆写的租户一个 pass(organization_id: t.tenantId+ 该租户自己的 cutoff);$or: [{organization_id: {$nin: [...]}}, {organization_id: null}])。于是 N 个租户覆写 ⇒ 一个对象一轮最多删 (N+1) × 10000 行,而不是注释承诺的 10000。
为什么这不是 #5194 的回归,也不是当下的故障
lifecyclesettings namespace),目前没有部署在用;值得记下来的原因
「bound one sweep's work」是文件里写明的承诺,而在租户覆写存在时它字面上不成立 —— 下一个读这段注释的人会按 10000 估算一轮的成本。要么把预算改成跨 pass 共享(一个对象一轮一份 10000,按 pass 依次消耗),要么把注释改成「per (object, scope)」并说明为什么这样是对的。两种都是小改动,但属于语义取舍,不该由本 PR 顺手决定。
PR #5753 的正文里已如实记了这一条。
Found-during: #5194 / PR #5753