conductor-oss/conductor · error · TransientException

Failed to lookup workflowId from taskId

Error message

Failed to lookup workflowId from taskId: %s

What it means

lookupWorkflowIdFromTaskId wraps DriverException in a TransientException naming the task id. The lookup reads the task_lookup table to map a task id back to its workflow id; driver-level failures are retried by the framework RetryTemplate.

Solutions

  1. Confirm Cassandra health and that read consistency is satisfiable.
  2. Tune driver read timeouts and connection pool sizing.
  3. Use the built-in retry; investigate the logged DriverException for persistent causes.
  4. Lower read consistency if correctness permits to reduce unavailable reads.
Defensive patterns

Strategy: retry

Try / catch

RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();
return retry.execute(ctx -> lookupWorkflowIdFromTaskId(taskId));

Prevention

When it happens

Trigger: Reading task_lookup by task id fails at the driver level — read timeout, node unavailable, consistency not met.

Common situations: Cluster degradation during task lookups, driver pool exhaustion, mismatched read consistency and RF.

Related errors


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

Appendix: source

Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java:881

                        () ->
                                new NotFoundException(
                                        "Workflow with id: %s not found in data store",
                                        workflowId));
    }

    @VisibleForTesting
    String lookupWorkflowIdFromTaskId(String taskId) {
        UUID taskUUID = toUUID(taskId, "Invalid task id");
        try {
            ResultSet resultSet = session.execute(selectTaskLookupStatement.bind(taskUUID));
            return Optional.ofNullable(resultSet.one())
                    .map(row -> row.getUUID(WORKFLOW_ID_KEY).toString())
                    .orElse(null);
        } catch (DriverException e) {
            Monitors.error(CLASS_NAME, "lookupWorkflowIdFromTaskId");
            String errorMsg = String.format("Failed to lookup workflowId from taskId: %s", taskId);
            LOGGER.error(errorMsg, e);
            throw new TransientException(errorMsg, e);
        }
    }
}

View on GitHub (pinned to cf7c3e4a8a)