diff --git a/web_server.py b/web_server.py index c5b5fa94..de9c084f 100644 --- a/web_server.py +++ b/web_server.py @@ -667,8 +667,8 @@ class WebUIDownloadMonitor: state_str = live_info.get('state', '') progress = live_info.get('percentComplete', 0) - # IMMEDIATE ERROR RETRY: Check for errored/rejected downloads first (no timeout needed) - if 'Errored' in state_str or 'Failed' in state_str or 'Rejected' in state_str: + # IMMEDIATE ERROR RETRY: Check for errored/rejected/timed-out downloads first (no timeout needed) + if 'Errored' in state_str or 'Failed' in state_str or 'Rejected' in state_str or 'TimedOut' in state_str: retry_count = task.get('error_retry_count', 0) last_retry = task.get('last_error_retry_time', 0) @@ -14317,7 +14317,7 @@ def _build_batch_status_data(batch_id, batch, live_transfers_lookup): if 'Cancelled' in state_str or 'Canceled' in state_str: task_status['status'] = 'cancelled' task['status'] = 'cancelled' - elif 'Failed' in state_str or 'Errored' in state_str or 'Rejected' in state_str: + elif 'Failed' in state_str or 'Errored' in state_str or 'Rejected' in state_str or 'TimedOut' in state_str: # UNIFIED ERROR HANDLING: Let monitor handle errors for consistency # Monitor will detect errored state and trigger retry within 5 seconds print(f"🔍 Task {task_id} API shows error state: {state_str} - letting monitor handle retry")