{"record":{"id":"0ccd5227102bb71c","repo":"conductor-oss/conductor","slug":"task-timed-out-after-d-seconds-timeout-configure","errorCode":null,"errorMessage":"Task timed out after %d seconds. Timeout configured as %d seconds. Timeout policy configured to %s","messagePattern":"Task timed out after (.+?) seconds\\. Timeout configured as (.+?) seconds\\. Timeout policy configured to (.+?)","errorType":"exception","errorClass":"TerminateWorkflowException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/netflix/conductor/core/execution/DeciderService.java","lineNumber":892,"sourceCode":"                        taskDef.getTimeoutPolicy().name());\n        timeoutTaskWithTimeoutPolicy(reason, taskDef, task);\n    }\n\n    void timeoutTaskWithTimeoutPolicy(String reason, TaskDef taskDef, TaskModel task) {\n        Monitors.recordTaskTimeout(task.getTaskDefName());\n\n        switch (taskDef.getTimeoutPolicy()) {\n            case ALERT_ONLY:\n                LOGGER.info(reason);\n                return;\n            case RETRY:\n                task.setStatus(TIMED_OUT);\n                task.setReasonForIncompletion(reason);\n                return;\n            case TIME_OUT_WF:\n                task.setStatus(TIMED_OUT);\n                task.setReasonForIncompletion(reason);\n                throw new TerminateWorkflowException(reason, WorkflowModel.Status.TIMED_OUT, task);\n        }\n    }\n\n    @VisibleForTesting\n    boolean isResponseTimedOut(TaskDef taskDefinition, TaskModel task) {\n        if (taskDefinition == null) {\n            LOGGER.warn(\n                    \"missing task type : {}, workflowId= {}\",\n                    task.getTaskDefName(),\n                    task.getWorkflowInstanceId());\n            return false;\n        }\n\n        if (task.getStatus().isTerminal() || isAyncCompleteSystemTask(task)) {\n            return false;\n        }\n\n        // calculate pendingTime","sourceCodeStart":874,"sourceCodeEnd":910,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/core/execution/DeciderService.java#L874-L910","documentation":"timeoutTaskWithTimeoutPolicy sets the task to TIMED_OUT with the given reason and, when taskDef.timeoutPolicy is TIME_OUT_WF, throws a TerminateWorkflowException (status TIMED_OUT) that terminates the workflow. The reason string is built by callers (e.g. response-timeout, poll-timeout, total-timeout) and reports seconds elapsed, configured timeout, and policy.","triggerScenarios":"A per-attempt task timeout (responseTimeoutSeconds or pollTimeout) elapses on a task whose TaskDef.timeoutPolicy == TIME_OUT_WF.","commonSituations":"A worker not polling/updating within responseTimeoutSeconds; a hung external system; timeoutPolicy left at TIME_OUT_WF when ALERT_ONLY or RETRY was intended.","solutions":["Raise responseTimeoutSeconds / pollTimeout on the TaskDef to fit the real worker latency.","Change timeoutPolicy to RETRY (re-queue) or ALERT_ONLY (log only) if termination is too aggressive.","Diagnose why the worker is not updating the task (worker down, queue backlog, network).","Ensure the task implementation reports status before the configured timeout."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Warn if per-attempt timeout < typical worker latency.\nif (td.getResponseTimeoutSeconds() > 0 && td.getResponseTimeoutSeconds() < p99WorkerSeconds(taskType)) {\n    LOGGER.warn(\"responseTimeoutSeconds for {} likely too low\", taskType);\n}","typeGuard":null,"tryCatchPattern":"try {\n    deciderService.decide(workflow);\n} catch (TerminateWorkflowException e) {\n    if (e.getMessage().contains(\"Task timed out\")) {\n        // raise responseTimeoutSeconds or switch policy to RETRY/ALERT_ONLY\n    }\n}","preventionTips":["Set responseTimeoutSeconds/pollTimeout from measured worker p99 latency.","Choose RETRY or ALERT_ONLY instead of TIME_OUT_WF when termination is too harsh.","Ensure workers update task status before the timeout."],"tags":["conductor","workflow","decider","task-timeout","time-out-wf","terminate-workflow"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}