Fix stale task polling by keeping it always active alongside WebSocket
Polling was disabled when wsConnected was true, but if the WS connected while workers hadn't been redeployed (no pub/sub messages flowing), the UI received no updates at all. Polling now always runs at 5s as the baseline. WebSocket provides faster real-time updates on top when available — the two coexist, last writer wins.
This commit is contained in:
parent
f3cbeb3f5e
commit
8d52bdf99d
2 changed files with 5 additions and 6 deletions
|
|
@ -134,11 +134,8 @@ export function TaskIndicator({
|
|||
}
|
||||
}, [wsConnected, wsTasks, taskID]);
|
||||
|
||||
// ----- Polling fallback (only when WS is not connected) -----
|
||||
// ----- Polling (always active as baseline; WS provides faster updates on top) -----
|
||||
useEffect(() => {
|
||||
// If WS is connected, skip polling
|
||||
if (wsConnected) return;
|
||||
|
||||
if (!user || !taskID) {
|
||||
setTaskStatus(null);
|
||||
setTaskResult(null);
|
||||
|
|
@ -153,6 +150,8 @@ export function TaskIndicator({
|
|||
setTaskResult(null);
|
||||
|
||||
const pollTaskStatus = async () => {
|
||||
// Skip this poll cycle if cancelled locally
|
||||
if (cancelledRef.current) return true;
|
||||
try {
|
||||
const data = await fetchTaskStatus(user, taskID);
|
||||
const status = data.status as TaskStatus;
|
||||
|
|
@ -214,7 +213,7 @@ export function TaskIndicator({
|
|||
}, POLLING_INTERVALS.TASK_STATUS_MS);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [taskID, user, wsConnected]);
|
||||
}, [taskID, user]);
|
||||
|
||||
const handleCancel = async () => {
|
||||
if (!user || !taskID || isCancelling) return;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ export const DEFAULT_FORM_VALUES = {
|
|||
|
||||
// Polling intervals
|
||||
export const POLLING_INTERVALS = {
|
||||
TASK_STATUS_MS: 30000, // 30 seconds (fallback when WebSocket is unavailable)
|
||||
TASK_STATUS_MS: 5000, // 5 seconds
|
||||
} as const;
|
||||
|
||||
// WebSocket paths
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue