conductor-oss/conductor · error · TransientException
Failed to remove task lookup: %s
Error message
Failed to remove task lookup: %s
What it means
removeTaskLookup wraps DriverException in a TransientException naming the task id. It deletes the task_lookup row (and removes the task from its limit if applicable); driver failures are retried by the framework RetryTemplate.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java:820
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg);
}
}
protected void removeTaskLookup(TaskModel task) {
try {
recordCassandraDaoRequests(
"removeTaskLookup", task.getTaskType(), task.getWorkflowType());
if (task.getTaskDefinition().isPresent()
&& task.getTaskDefinition().get().concurrencyLimit() > 0) {
removeTaskFromLimit(task);
}
session.execute(deleteTaskLookupStatement.bind(UUID.fromString(task.getTaskId())));
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "removeTaskLookup");
String errorMsg = String.format("Failed to remove task lookup: %s", task.getTaskId());
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg);
}
}
@VisibleForTesting
void validateTasks(List<TaskModel> tasks) {
Preconditions.checkNotNull(tasks, "Tasks object cannot be null");
Preconditions.checkArgument(!tasks.isEmpty(), "Tasks object cannot be empty");
tasks.forEach(
task -> {
Preconditions.checkNotNull(task, "task object cannot be null");
Preconditions.checkNotNull(task.getTaskId(), "Task id cannot be null");
Preconditions.checkNotNull(
task.getWorkflowInstanceId(), "Workflow instance id cannot be null");
Preconditions.checkNotNull(
task.getReferenceTaskName(), "Task reference name cannot be null");
});
String workflowId = tasks.get(0).getWorkflowInstanceId();View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Verify Cassandra is reachable and the delete consistency is satisfiable.
- Tune driver connection pool and timeouts.
- Rely on the framework retry; inspect the logged DriverException for the real cause.
- Ensure RF tolerates node loss for the configured consistency.
Defensive patterns
Strategy: retry
Try / catch
RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();
retry.execute(ctx -> { removeTaskLookup(task); return null; }); Prevention
- Tune driver connection pool and delete timeouts for task cleanup spikes.
- Maintain RF adequate for the configured consistency.
- Alert on rising transient delete failures to catch cluster issues early.
When it happens
Trigger: Deleting the task_lookup entry by task id fails at the driver level during task/workflow cleanup.
Common situations: Cluster instability during heavy task cleanup, driver pool exhaustion, consistency not met.
Related errors
- Failed to remove task: %s
- Failed to lookup workflowId from taskId: %s
- Failed to get workflow: %s
- Failed to add event execution for event: %s, handler: %s
- Failed to update event execution for event: %s, handler: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/415b920140cebf5f.
Report an issue: GitHub.