mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-10-05 12:28:22 +00:00
fix: skip deeply nested upstream events in the stats observer
This commit is contained in:
@@ -160,8 +160,9 @@ def observe_terminal_sse_bytes(
|
||||
continue
|
||||
try:
|
||||
parsed = json.loads(payload)
|
||||
except ValueError:
|
||||
# Bytes cut inside a character raise UnicodeDecodeError, not JSONDecodeError.
|
||||
except (ValueError, RecursionError):
|
||||
# Bytes cut inside a character raise UnicodeDecodeError, not
|
||||
# JSONDecodeError; an upstream's deep nesting raises RecursionError.
|
||||
continue
|
||||
if isinstance(parsed, dict):
|
||||
state.observe(parsed)
|
||||
|
||||
@@ -1388,6 +1388,14 @@ def test_stream_cut_inside_a_character_does_not_raise() -> None:
|
||||
assert observe_terminal_sse_bytes(state, b"", tail, final=True) == b""
|
||||
|
||||
|
||||
def test_deeply_nested_event_does_not_raise() -> None:
|
||||
state = TerminalOutcomeState()
|
||||
event = b"data: " + b"[" * 200_000 + b"]" * 200_000 + b"\n\n"
|
||||
|
||||
assert observe_terminal_sse_bytes(state, b"", event, final=True) == b""
|
||||
assert state.usage is None
|
||||
|
||||
|
||||
def test_routstr_upstream_cost_event_is_not_provider_usage() -> None:
|
||||
state = TerminalOutcomeState()
|
||||
stream = (
|
||||
|
||||
Reference in New Issue
Block a user