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
Commit c47ed6c
Browse filesBrowse the repository at this point in the historyBrowse files
fix(logs): keep compacted child span trees shaped as trees (#8403)
* fix(logs): keep compacted child span trees shaped as trees
Block output compaction spilled oversized child span lists to large-value
references, so a span's children could stop being an array and trace span
building threw while finalizing the run. That left pauses unpersisted and
runs unfinalized.
- Compact child span trees structurally, spilling only each span's payload fields
- Drop non-list child spans with a warning when building trace spans
- Finalize without spans if building them fails, so logs, pauses, and billing settle
* fix(logs): keep an output carrying child spans a record when compacting it
* fix(logs): split child spans off block output so oversized state still spills
* fix(logs): keep a child span tree whole or drop it, bounded as before
A structurally compacted tree had no whole-tree bound, so a large one stayed
inline in block logs and pause snapshots. A tree still over the threshold
after its payloads spill is now dropped (or rejected), as generic compaction
bounded it. Block log outputs compact generically again; new logs never carry
child spans there.
* fix(logs): keep the skeleton of a child span tree too large to keep whole
A tree over the threshold as a whole now keeps its shape, names, timing,
status, and cost instead of disappearing, using the same content stripping
the execution log applies to oversized traces (moved to a shared module). Only
a tree whose skeleton is still over the threshold is dropped.
* fix(logs): keep span trees well formed and keep nested child workflows in the skeleton
The structural walk now keeps only span objects and drops a child list that
is not an array, so building a skeleton can never throw on a malformed entry.
The skeleton keeps a nested child workflow's output.childTraceSpans.
* fix(logs): skip span fields not in their expected shape when summarizing
Per-field compaction can spill an oversized modelToolCalls, toolCalls, or
providerTiming to a large-value reference; the skeleton now drops such a field
instead of reading it.
0 commit comments