{"record":{"id":"0528a77cc5555df4","repo":"conductor-oss/conductor","slug":"error-updating-task-s-in-workflow-s","errorCode":null,"errorMessage":"Error updating task: %s in workflow: %s","messagePattern":"Error updating task: (.+?) in workflow: (.+?)","errorType":"exception","errorClass":"TransientException","httpStatus":500,"severity":"error","filePath":"cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java","lineNumber":285,"sourceCode":"                    if (nextIds != null && !nextIds.isEmpty()) {\n                        LOGGER.debug(\n                                \"Concurrency slot freed for {}, releasing postponed task {}\",\n                                task.getTaskDefName(),\n                                nextIds.get(0));\n                        queueDAO.resetOffsetTime(queueName, nextIds.get(0));\n                    }\n                } else if (task.getStatus() == TaskModel.Status.IN_PROGRESS) {\n                    addTaskToLimit(task);\n                }\n            }\n        } catch (DriverException e) {\n            Monitors.error(CLASS_NAME, \"updateTask\");\n            String errorMsg =\n                    String.format(\n                            \"Error updating task: %s in workflow: %s\",\n                            task.getTaskId(), task.getWorkflowInstanceId());\n            LOGGER.error(errorMsg, e);\n            throw new TransientException(errorMsg, e);\n        }\n    }\n\n    /**\n     * This is a dummy implementation and this feature is not implemented for Cassandra backed\n     * Conductor\n     */\n    @Override\n    public boolean exceedsLimit(TaskModel task) {\n        Optional<TaskDef> taskDefinition = task.getTaskDefinition();\n        if (taskDefinition.isEmpty()) {\n            return false;\n        }\n        int limit = taskDefinition.get().concurrencyLimit();\n        if (limit <= 0) {\n            return false;\n        }\n","sourceCodeStart":267,"sourceCodeEnd":303,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java#L267-L303","documentation":"Thrown by CassandraExecutionDAO.updateTask when updating a task row fails. DriverException during session.execute (task payload update, plus rate-limit bookkeeping) is wrapped in TransientException. Reports taskId and workflowInstanceId.","triggerScenarios":"Calling updateTask(TaskModel) when Cassandra is unavailable, the task's workflowId is not a valid UUID, or the write times out. Also when addTaskToLimit / rate-limit bookkeeping fails inside the same try block.","commonSituations":"Cassandra connectivity loss. Non-UUID workflow ID. Write timeout under load. Concurrent rate-limit counter contention.","solutions":["Verify the task's workflowInstanceId is a valid UUID.","Confirm Cassandra health and retry the update.","If rate-limit counters are involved, ensure the task_def_rate_limit table schema is intact.","Inspect driver logs for the specific DriverException subtype (timeout vs unavailable)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Validate task id fields before updateTask\nif (!isUuid(task.getWorkflowInstanceId()) || isBlank(task.getTaskId()))\n    throw new IllegalArgumentException(\"invalid task identity\");","typeGuard":"static boolean isUuid(String s) {\n    try { java.util.UUID.fromString(s); return true; } catch (IllegalArgumentException e) { return false; }\n}","tryCatchPattern":"try {\n    dao.updateTask(task);\n} catch (TransientException e) {\n    log.warn(\"Transient updateTask failure for {}; retrying\", task.getTaskId());\n    throw e;","preventionTips":["Validate task identity fields before update.","Retry TransientException and confirm rate-limit table integrity.","Inspect the DriverException subtype to distinguish timeout from unavailable."],"tags":["cassandra","task","write","rate-limit","transient","persistence"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}