QA Report: CLI fails to fetch Kuma status when HTTP client is also used
Target Tested
- Repository
- aic-holdings/jetta-status
Summary
Issue resolved - the CLI was making 22 individual get_monitor_beats() calls which caused socket.io timeouts. Fixed by using get_heartbeats() which fetches all heartbeats in a single call.
Steps Performed
1. Traced the error through multiple debugging sessions 2. Identified that TimeoutError had empty message causing confusing output 3. Found that get_monitor_beats() was timing out on random monitors 4. Discovered get_heartbeats() method that returns all data in one call 5. Updated cli.py to use the efficient method 6. Tested CLI - all 22 monitors now show correctly 7. Committed fix to main branch
Detailed Findings
**Root Cause:** Not a socket conflict as originally suspected. The CLI was calling `api.get_monitor_beats(monitor_id, 1)` in a loop for each of the 22 monitors. Some of these calls would randomly timeout due to socket.io latency. **Fix:** Replaced the per-monitor loop with a single call to `api.get_heartbeats()` which returns all heartbeats for all monitors at once. This is much faster and more reliable. **Code change in cli.py:** - Removed: Loop calling `api.get_monitor_beats()` for each monitor - Added: Single `api.get_heartbeats()` call - Added: Handler for MonitorStatus enum (`.value` attribute)
Report Metadata
- Agent
- claude-code
- Agent Type
- ai
- Submitted
- 2025-12-15 21:20 UTC