kshitijk4poor
f4fbaa6cda
fix(langfuse): bound _TRACE_STATE growth from non-finalizing turns
...
Scoping the trace key by turn_id (the prior commit) fixed cross-turn
collisions but introduced a slow leak: _finish_trace only pops a key when a
turn ends cleanly (final response has content and no tool calls), so any
turn that is interrupted, ends on a tool call, or has empty final content
now leaves its uniquely-keyed entry in _TRACE_STATE forever. Previously the
constant per-session key was overwritten by the next turn, capping growth at
~1 entry per session.
Add an LRU cap (_MAX_TRACE_STATE) enforced by _evict_stale_locked, called
under _STATE_LOCK immediately before each insert. It evicts the
least-recently-updated entries (using the previously-dead last_updated_at
field) and ends their root span so nothing dangles. Regression test drives
50 non-finalizing turns against a cap of 8 and asserts the dict stays bounded
with the most-recent turns surviving.
2026-06-18 12:59:41 +05:30
..
2026-06-16 15:49:59 -07:00
2026-05-18 10:14:38 -07:00
2026-06-17 17:33:32 -07:00
2026-06-13 05:40:18 -07:00
2026-06-15 06:29:00 -07:00
2026-06-18 09:09:21 +10:00
2026-06-14 04:51:50 -07:00
2026-03-14 14:27:20 +03:00
2026-06-02 12:37:40 -04:00
2026-06-18 15:25:29 +10:00
2026-06-18 11:34:11 +05:30
2026-06-11 12:31:10 +05:30
2026-06-11 15:06:07 -04:00
2026-06-06 11:46:24 -07:00
2026-06-17 23:59:24 +05:30
2026-06-18 12:59:41 +05:30
2026-06-16 13:09:40 -07:00
2026-06-18 11:28:51 +05:30
2026-06-08 15:21:28 -07:00
2026-06-05 13:30:02 +10:00
2026-05-28 22:26:25 -07:00
2026-06-18 14:14:41 +10:00
2026-06-16 14:30:11 -04:00
2026-06-01 19:52:28 -07:00
2026-06-12 13:42:42 -04:00
2026-03-17 02:53:33 -07:00
2026-04-21 01:56:35 -07:00
2026-06-15 11:55:02 -04:00
2026-06-13 14:50:05 -07:00
2026-05-28 22:26:25 -07:00
2026-06-06 18:33:44 -07:00
2026-05-28 22:26:25 -07:00
2026-05-18 21:43:59 -07:00
2026-05-28 22:26:25 -07:00
2026-06-15 12:50:19 -04:00
2026-06-17 18:48:35 -05:00
2026-06-03 07:32:00 +07:00
2026-06-14 00:27:59 -04:00
2026-06-10 15:32:34 +10:00
2026-06-01 16:06:44 +10:00
2026-06-01 13:32:55 +10:00
2026-06-05 02:54:34 -07:00
2026-06-10 17:37:34 -07:00
2026-05-25 15:18:55 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-06-08 06:32:42 -07:00
2026-05-28 22:26:25 -07:00
2026-06-17 12:11:31 +10:00
2026-06-17 15:39:04 -05:00
2026-05-28 21:40:39 -07:00
2026-05-27 14:31:55 -07:00
2026-06-16 15:49:59 -07:00
2026-06-08 09:35:22 -07:00
2026-05-29 22:29:48 -07:00
2026-05-27 10:49:33 -07:00
2026-06-01 20:13:42 -07:00
2026-06-08 02:18:21 -07:00
2026-06-18 14:14:41 +10:00
2026-06-14 17:34:11 +07:00
2026-05-27 13:55:51 -07:00
2026-05-28 22:26:25 -07:00
2026-06-13 05:19:44 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-04-19 22:44:47 -07:00
2026-05-28 22:26:25 -07:00
2026-03-24 08:19:23 -07:00
2026-06-09 23:22:10 -07:00
2026-05-28 22:26:25 -07:00
2026-06-04 18:04:47 -07:00
2026-06-03 11:22:06 -07:00
2026-05-28 22:26:25 -07:00
2026-06-09 03:17:12 -07:00
2026-06-09 14:03:20 -04:00
2026-05-28 22:26:25 -07:00
2026-06-08 09:35:22 -07:00
2026-05-28 22:26:25 -07:00
2026-06-08 12:11:54 -07:00
2026-06-12 13:42:42 -04:00
2026-06-08 07:03:12 -07:00
2026-03-19 15:16:35 +01:00
2026-06-09 18:49:08 -05:00
2026-06-14 03:20:21 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-06-07 05:01:27 -07:00
2026-06-03 06:36:46 -07:00
2026-06-17 16:46:21 -04:00
2026-06-12 08:30:06 -05:00
2026-06-12 14:02:19 -04:00
2026-06-03 12:00:27 -07:00
2026-05-28 22:26:25 -07:00
2026-04-26 18:50:49 -07:00
2026-06-12 02:06:47 -07:00
2026-05-28 22:26:25 -07:00
2026-06-07 17:49:38 -07:00