perf(session-projection): avoid restore tail copies

This commit is contained in:
_Kerman
2026-08-21 14:09:33 +08:00
parent bb3105d7b5
commit a216756222
@@ -440,12 +440,10 @@ export class SessionProjectionRegistry extends Service {
)
}
let state = usable ? def.stateSchema.parse(row.val) : def.init()
// The events are seq-ordered: slice off the already-folded prefix
// (events at or below the seed watermark) and fold only the tail.
const from = usable ? row.seq : baseSeq - 1
const tailStart = events.findIndex(event => event.seq > from)
const tail = tailStart === -1 ? [] : events.slice(tailStart)
for (const event of tail) state = def.apply(state, event)
for (const event of events) {
if (event.seq > from) state = def.apply(state, event)
}
if (def.wire !== undefined) values[def.key] = def.wire.viewSchema.parse(def.wire.view(state))
refreshed[def.key] = { ver: def.stateVersion, seq: endSeq, val: state }
}