Adovo

Applied AI

A slow LangGraph subscriber can silently hang its thread stream

Detect and contain a reported LangGraph SDK stream stall when one subscriber falls behind the event fan-out queue.

November 5, 2026

A streamed agent can keep running while the user interface stops receiving events. A recent LangGraph SDK issue reproduces a slow subscriber that falls more than the default 1,024-event queue behind. The server sends 1,100 events; the subscriber receives 1,025, then neither sees the rest nor gets an end-of-stream. The fan-out task ends with QueueFull, but no exception reaches the caller. That makes a “still thinking” spinner a misleading signal.

Separate run state from stream state

Record thread ID, run ID, last event sequence or ID, and time of last received event. Keep the authoritative run status query separate from the live event stream. A quiet stream should trigger a bounded status check, not an indefinite wait. The Python SDK documents thread streaming; the reported bug is in fan-out to subscribers, so an application-level timeout is a containment measure, not a library fix.

Reproduce the slow consumer

Test a consumer that pauses while the server produces a burst of events. Compare sent and received event counts and confirm whether the stream terminates. If a UI renders each token synchronously or performs expensive work in an event callback, move that work to a bounded worker and record queue depth. Avoid simply increasing queue size until memory use and burst volume have been measured. Also test reconnect behavior with the same thread and a known event cursor if the SDK path supports it.

Give the user a truthful outcome

When delivery stalls, surface “stream disconnected or delayed” and fetch final run state before offering Retry. Retrying an agent with side-effecting tools can duplicate actions. Ask the platform owner for a load test that proves end-of-stream delivery under realistic bursts, plus telemetry for lost sequence numbers and stream silence.

Adovo’s view

A progress feed is not the job. The system owes the user a dependable account of what finished, even when its live narration fails. Keep execution, delivery, and side effects observable as separate facts.

Continue exploring

Applied AI

LangGraphAgent Reliability

LangGraph resume can return before child fan-out completes

Detect incomplete LangGraph child output after a sibling failure and checkpoint resume.

Read more

Applied AI

LangGraphAgent Reliability

LangGraph SQLite checkpoints retain part of a failed write batch

Test checkpoint atomicity before using SQLite pending writes for agent recovery.

Read more

Applied AI

LangGraphAgent Workflows

A deferred LangGraph join can run before all branches finish

A deferred join is not a substitute for proving branch completion. Reproduce scheduling behavior and make aggregation safe to rerun.

Read more
Explore applied AI services →