mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-10-19 06:23:43 +02:00
## Summary - Fixes a bug where `runtime.execution_info` is `None` in the distributed runtime (LangGraph Platform) because tasks are prepared by the server and deserialized in the executor, bypassing the OSS `_algo.py` code that normally creates `ExecutionInfo` - Adds `_ensure_execution_info()` in `_retry.py` that lazily constructs `ExecutionInfo` from the task config when it's missing, called in both `run_with_retry` and `arun_with_retry` ## Why PR #7363 introduced `ExecutionInfo` on `Runtime`, populated during task preparation in `_algo.py`. However, on LangGraph Platform (distributed runtime), tasks are serialized by the server and deserialized in a separate executor process — `_algo.py` task prep never runs in that context, so `execution_info` remains `None`. Any user code or tooling relying on `runtime.execution_info` (e.g. for tracing, logging, or auth) would fail with `None` fields. The fix reconstructs `ExecutionInfo` from config keys (`checkpoint_id`, `checkpoint_ns`, `task_id`, `thread_id`, `run_id`) that are already present in the deserialized task config, so no server-side changes are needed. ## Test plan - [x] `_ensure_execution_info` is a no-op when `execution_info` already exists - [x] `_ensure_execution_info` creates `ExecutionInfo` from config when missing - [x] Falls back to `task.id` when `CONFIG_KEY_TASK_ID` is absent from config - [x] End-to-end `run_with_retry` test simulating the distributed runtime scenario (runtime with `execution_info=None`)