mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-01 21:28:10 +00:00
feat(events): add reset_runtime_state to release accumulated bus state
This commit is contained in:
@@ -281,6 +281,12 @@ class CrewAIEventsBus:
|
||||
"""The RuntimeState currently attached to the bus, if any."""
|
||||
return self._runtime_state
|
||||
|
||||
def reset_runtime_state(self) -> None:
|
||||
"""Detach the RuntimeState and clear the entity registry."""
|
||||
with self._instance_lock:
|
||||
self._runtime_state = None
|
||||
self._registered_entity_ids = set()
|
||||
|
||||
def register_entity(self, entity: Any) -> None:
|
||||
"""Add an entity to the RuntimeState, creating it if needed.
|
||||
|
||||
|
||||
@@ -409,4 +409,31 @@ class TestRuntimeStateIntegration:
|
||||
old_json, context={"from_checkpoint": True}
|
||||
)
|
||||
assert len(restored.root) == 1
|
||||
assert len(restored.event_record) == 0
|
||||
assert len(restored.event_record) == 0
|
||||
|
||||
def test_reset_runtime_state_clears_state_and_registry(self):
|
||||
from crewai import Agent, Crew, RuntimeState
|
||||
from crewai.events.event_bus import crewai_event_bus
|
||||
|
||||
if RuntimeState is None:
|
||||
pytest.skip("RuntimeState unavailable (model_rebuild failed)")
|
||||
|
||||
agent = Agent(role="test", goal="test", backstory="test", llm="gpt-4o-mini")
|
||||
crew = Crew(agents=[agent], tasks=[], verbose=False)
|
||||
|
||||
previous_state = crewai_event_bus._runtime_state
|
||||
previous_ids = crewai_event_bus._registered_entity_ids
|
||||
crewai_event_bus._runtime_state = None
|
||||
crewai_event_bus._registered_entity_ids = set()
|
||||
try:
|
||||
crewai_event_bus.register_entity(crew)
|
||||
assert crewai_event_bus.runtime_state is not None
|
||||
assert crewai_event_bus._registered_entity_ids
|
||||
|
||||
crewai_event_bus.reset_runtime_state()
|
||||
|
||||
assert crewai_event_bus.runtime_state is None
|
||||
assert crewai_event_bus._registered_entity_ids == set()
|
||||
finally:
|
||||
crewai_event_bus._runtime_state = previous_state
|
||||
crewai_event_bus._registered_entity_ids = previous_ids
|
||||
Reference in New Issue
Block a user