perf(session): separate indexed and snapshot log reads

This commit is contained in:
_Kerman
2026-08-28 13:25:58 +08:00
parent 6d38ba8656
commit 5660f44d29
251 changed files with 1371 additions and 1207 deletions
@@ -162,7 +162,7 @@ export async function compactSurfaceRegion(
): Promise<CompactionResult> {
if (options.owner === null) signal?.throwIfAborted()
const selection = validateSurfaceRegion(session, start, end)
const entryState = inspectCompactionEntryState(session.events)
const entryState = inspectCompactionEntryState(session)
assertCompactionInactive(
entryState.unmatchedCompactionStart,
entryState.latestEndSeedSeq,
@@ -305,7 +305,7 @@ function assertCompactionInactive(
* @param stage - operation label included in the busy diagnostic.
*/
export function assertNoActiveCompaction(session: Session, stage: string): void {
const entryState = inspectCompactionEntryState(session.events)
const entryState = inspectCompactionEntryState(session)
assertCompactionInactive(
entryState.unmatchedCompactionStart,
entryState.latestEndSeedSeq,
@@ -510,11 +510,10 @@ function buildSummarizationInput(
shadowedSeqs: readonly number[],
): SummarizationInput {
const header = session.requestHeader()
const events = session.events
const regionMessages = shadowedSeqs
// shadowedSeqs are current surface seqs, so each is a valid log index.
// oxlint-disable-next-line typescript/no-non-null-assertion
.map(seq => session.deriveEventMessage(events[seq]!))
.map(seq => session.deriveEventMessage(session.eventAt(seq)!))
.filter((message): message is Message => message !== null)
return {
...header?.system === undefined ? {} : { system: header.system },
@@ -524,15 +523,15 @@ function buildSummarizationInput(
}
/** Inspect open-turn, unmatched-compaction, and latest seed-boundary state independently. */
function inspectCompactionEntryState(events: readonly SessionEvent[]): CompactionEntryState {
function inspectCompactionEntryState(session: Session): CompactionEntryState {
let openTurn: number | null = null
let openTurnStateKnown = false
let unmatchedCompactionStart: SessionEvent<'compaction/start'> | undefined
let compactionEntryStateKnown = false
let latestEndSeedSeq: number | undefined
for (let index = events.length - 1; index >= 0; index -= 1) {
for (let seq = session.seq - 1; seq >= 0; seq -= 1) {
// oxlint-disable-next-line typescript/no-non-null-assertion
const event = events[index]!
const event = session.eventAt(seq)!
if (latestEndSeedSeq === undefined && event.type === 'session/end-seed') {
latestEndSeedSeq = event.seq
}