conductor-oss/conductor · error · TransientException
Error updating task: %s in workflow: %s
Error message
Error updating task: %s in workflow: %s
What it means
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.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java:285
if (nextIds != null && !nextIds.isEmpty()) {
LOGGER.debug(
"Concurrency slot freed for {}, releasing postponed task {}",
task.getTaskDefName(),
nextIds.get(0));
queueDAO.resetOffsetTime(queueName, nextIds.get(0));
}
} else if (task.getStatus() == TaskModel.Status.IN_PROGRESS) {
addTaskToLimit(task);
}
}
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "updateTask");
String errorMsg =
String.format(
"Error updating task: %s in workflow: %s",
task.getTaskId(), task.getWorkflowInstanceId());
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg, e);
}
}
/**
* This is a dummy implementation and this feature is not implemented for Cassandra backed
* Conductor
*/
@Override
public boolean exceedsLimit(TaskModel task) {
Optional<TaskDef> taskDefinition = task.getTaskDefinition();
if (taskDefinition.isEmpty()) {
return false;
}
int limit = taskDefinition.get().concurrencyLimit();
if (limit <= 0) {
return false;
}
View on GitHub (pinned to cf7c3e4a8a)
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).
Defensive patterns
Strategy: validation
Validate before calling
// Validate task id fields before updateTask
if (!isUuid(task.getWorkflowInstanceId()) || isBlank(task.getTaskId()))
throw new IllegalArgumentException("invalid task identity"); Type guard
static boolean isUuid(String s) {
try { java.util.UUID.fromString(s); return true; } catch (IllegalArgumentException e) { return false; }
} Try / catch
try {
dao.updateTask(task);
} catch (TransientException e) {
log.warn("Transient updateTask failure for {}; retrying", task.getTaskId());
throw e; Prevention
- Validate task identity fields before update.
- Retry TransientException and confirm rate-limit table integrity.
- Inspect the DriverException subtype to distinguish timeout from unavailable.
When it happens
Trigger: 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.
Common situations: Cassandra connectivity loss. Non-UUID workflow ID. Write timeout under load. Concurrent rate-limit counter contention.
Related errors
- Error creating %d tasks for workflow: %s
- Error creating/updating event handler: %s/%s
- Failed to get in progress limit - %s:%s in workflow :%s
- Error getting task by id: %s
- Error creating workflow: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/0528a77cc5555df4.
Report an issue: GitHub.