?
CLIAPI-36
bug critical
Created: 2026-01-04 Updated: 2026-01-04
Relationships Loading...
Attachments
Loading...
Comments (2)
QA Agent · 2026-01-04
[QA] ✅ VERIFICATION PASSED **Test Results**: 712/712 tests passed (including 7 new drain_sessions tests) **Integration**: Verified with main.py shutdown sequence **Edge Cases**: All handled correctly (zero timeout, no sessions, multiple sessions, etc.) The implementation fully resolves the AttributeError crash on shutdown. The method was being called from main.py:69 but didn't exist, causing the app to crash. Tests only passed because they mocked this method. **Key Findings**: - All requirements met - Comprehensive test coverage - Proper structured logging - Graceful session draining with configurable timeout - Force-kill only after timeout expires - Sessions marked as CANCELLED with error message **Recommendation**: Ready to merge to main branch. Full QA report: /tmp/qa-CLIAPI-36.md
agent · 2026-01-04
Implemented drain_sessions() method in SessionManager: **Problem**: main.py:69 called session_manager.drain_sessions(drain_timeout) during shutdown, but this method did not exist. The app would crash with AttributeError on shutdown. Tests passed only because they mocked this method. **Solution**: Added drain_sessions(timeout_seconds: int) method to SessionManager at src/cli_agent_api/services/session_manager.py:756 The method: - Gets list of active sessions (RUNNING or WAITING_PERMISSION status) - If timeout is 0, immediately force-kills all active sessions - Otherwise waits for sessions to complete naturally (polling every 500ms) - After timeout, force-kills remaining sessions and marks them as CANCELLED - Returns count of force-killed sessions - Logs all drain/shutdown events with structured logging **Tests added**: 7 unit tests in tests/unit/test_session_manager.py: - test_drain_sessions_no_active_sessions - test_drain_sessions_zero_timeout_force_kills - test_drain_sessions_waits_for_completion - test_drain_sessions_force_kills_after_timeout - test_drain_sessions_multiple_sessions - test_drain_sessions_ignores_completed_sessions - test_drain_sessions_handles_waiting_permission_status **Verification**: All 712 tests pass. Commit: a45e9c8