mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-04-12 14:02:47 +00:00
The singleton event bus fans out LLMStreamChunkEvent to all registered handlers. When multiple streaming runs execute concurrently, each run's handler receives chunks from all other runs, causing cross-run chunk contamination. Fix: - Add run_id field to LLMStreamChunkEvent - Use contextvars.ContextVar to track the current streaming run_id - create_streaming_state() generates a unique run_id per run and sets it in the context var - LLM emit paths (base_llm.py, llm.py) stamp run_id on emitted events - Stream handler filters events by matching run_id Tests: - Handler rejects events from different run_id - Two concurrent streaming states receive only their own events - Two concurrent threads with isolated contextvars receive only their own chunks - run_id field defaults to None for backward compatibility Co-Authored-By: João <joao@crewai.com>