fix(run-journal): skip metering telemetry on write and replay (#7272)
Metering telemetry is journaled at ~10 Hz during active turns, so marathon reasoning runs balloon the durable run journal (12.4 MB of a single 18 MB run was metering). On a mid-run refresh the reconnect path replays the entire journal as one unpaced SSE burst, OOM-crashing the browser tab in a crash-refresh loop while the server stays healthy. - Write time: RunJournalWriter.append_sse_event() skips metering rows via REPLAY_SKIPPED_SSE_EVENTS, returning None so caller journal-id plumbing is untouched and remaining journaled seqs stay contiguous. - Replay time: _replay_run_journal() and emit_replay() filter metering rows through journal_replay_visible(), so legacy journals never stream the backlog either. - Readers (read_run_events / read_session_run_events) deliberately keep every row: cursor math and the offline-gap coverage check count seqs. Refs #7272
This commit is contained in:
1 parent
c367ef3c05
commit
bcafbd6965
5 files changed
+185
No files matched your search
@@ -10710,6 +10710,7 @@ from api.run_journal import (
|
||||
_parse_run_journal_event_id as _shared_parse_run_journal_event_id,
|
||||
bound_run_journal_snapshot_args,
|
||||
find_run_summary,
|
||||
journal_replay_visible,
|
||||
read_run_events,
|
||||
read_session_run_events,
|
||||
session_journal_fingerprint,
|
||||
@@ -18575,6 +18576,8 @@ def _replay_run_journal(
|
||||
max_seq=max_seq,
|
||||
)
|
||||
for entry in journal.get("events") or []:
|
||||
if not journal_replay_visible(entry):
|
||||
continue
|
||||
_sse_with_id(
|
||||
handler,
|
||||
entry.get("event") or entry.get("type") or "message",
|
||||
@@ -19110,6 +19113,8 @@ def _handle_session_run_journal_stream_for_session(handler, parsed, session_id):
|
||||
|
||||
def emit_replay(events, stream_id, cutoff_seq):
|
||||
for entry in events:
|
||||
if not journal_replay_visible(entry):
|
||||
continue
|
||||
event_id = str(entry.get("event_id") or "")
|
||||
event_seq = _run_journal_same_run_seq(event_id, stream_id)
|
||||
if cutoff_seq is not None and event_seq is not None and event_seq > cutoff_seq:
|
||||
|
||||
Reference in new issue
Block a user