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

  1. Verify Cassandra is reachable and the delete consistency is satisfiable.
  2. Tune driver connection pool and timeouts.
  3. Rely on the framework retry; inspect the logged DriverException for the real cause.
  4. 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

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


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/415b920140cebf5f. Report an issue: GitHub.