mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 16:48:30 +00:00
This commit fixes issue #4135 by implementing cooperative cancellation to prevent orphaned threads and resource leaks when task execution times out. Changes: - Add deadline tracking to CrewAgentExecutor with set_execution_deadline(), clear_execution_deadline(), and _check_execution_deadline() methods - Add deadline check at the start of each iteration in _invoke_loop() and _ainvoke_loop() to enable cooperative cancellation - Update _execute_with_timeout() to set the deadline before execution and use shutdown(wait=False) to return control promptly after timeout - Update _aexecute_with_timeout() to set the deadline for consistency - Add comprehensive tests for timeout handling behavior The fix ensures that: 1. Timeout returns control to the caller promptly 2. Worker threads exit cleanly when they check the deadline 3. Resources are properly cleaned up after timeout Co-Authored-By: João <joao@crewai.com>