conductor-oss/conductor · error · TransientException
Error getting task by id: %s
Error message
Error getting task by id: %s
What it means
Thrown by CassandraExecutionDAO.getTask when reading a single task by id fails. DriverException during the workflow/task lookup is wrapped in TransientException (cause not attached). Reports the requested taskId.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java:380
.map(
row -> {
String taskRow = row.getString(PAYLOAD_KEY);
TaskModel task = readValue(taskRow, TaskModel.class);
recordCassandraDaoRequests(
"getTask", task.getTaskType(), task.getWorkflowType());
recordCassandraDaoPayloadSize(
"getTask",
taskRow.length(),
task.getTaskType(),
task.getWorkflowType());
return task;
})
.orElse(null);
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "getTask");
String errorMsg = String.format("Error getting task by id: %s", taskId);
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg);
}
}
@Override
public List<TaskModel> getTasks(List<String> taskIds) {
Preconditions.checkNotNull(taskIds);
Preconditions.checkArgument(taskIds.size() > 0, "Task ids list cannot be empty");
String workflowId = lookupWorkflowIdFromTaskId(taskIds.get(0));
if (workflowId == null) {
return null;
}
return getWorkflow(workflowId, true).getTasks().stream()
.filter(task -> taskIds.contains(task.getTaskId()))
.collect(Collectors.toList());
}
/**
* This is a dummy implementation and this feature is not implemented for Cassandra backedView on GitHub (pinned to cf7c3e4a8a)
Solutions
- Verify the taskId exists in task_lookup and maps to a valid UUID workflowId.
- Confirm Cassandra health and retry.
- Inspect driver logs for the DriverException subtype.
- Preserve the cause when rethrowing to aid debugging.
Example fix
// before throw new TransientException(errorMsg); // after throw new TransientException(errorMsg, e);
Defensive patterns
Strategy: retry
Validate before calling
// Validate the taskId maps to a UUID workflow before getTask String wfId = lookupWorkflowIdFromTaskId(taskId); if (wfId == null || !isUuid(wfId)) return null;
Type guard
static boolean isUuid(String s) {
try { java.util.UUID.fromString(s); return true; } catch (IllegalArgumentException e) { return false; }
} Try / catch
try {
return dao.getTask(taskId);
} catch (TransientException e) {
log.warn("Transient getTask failure for {}; retrying", taskId);
throw e; Prevention
- Validate taskId -> workflowId mapping before read.
- Retry TransientException and check Cassandra health.
- Attach the cause when rethrowing for better diagnostics.
When it happens
Trigger: Calling getTask(String taskId) when the lookup or workflow read fails — Cassandra unavailable, timeout, or the taskId maps to a workflowId that is not a valid UUID (UUID.fromString inside the path).
Common situations: Cassandra connectivity loss. Stale task_lookup row pointing at a non-UUID workflow. Read timeout under load. Schema drift.
Related errors
- Failed to get all event handlers
- Error creating %d tasks for workflow: %s
- Error updating task: %s in workflow: %s
- Failed to get in progress limit - %s:%s in workflow :%s
- Failed to remove task: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/47f9eb5d96bc72d3.
Report an issue: GitHub.