conductor-oss/conductor · error · TransientException

Failed to fetch event executions for event: %s, handler: %s

Error message

Failed to fetch event executions for event: %s, handler: %s

What it means

getEventExecutions wraps DriverException in a TransientException naming the event and handler. Read failures while listing event executions are retried by the framework RetryTemplate because driver errors are transient.

Source

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

    @VisibleForTesting
    List<EventExecution> getEventExecutions(
            String eventHandlerName, String eventName, String messageId) {
        try {
            return session
                    .execute(selectEventExecutionsStatement.bind(messageId, eventHandlerName))
                    .all()
                    .stream()
                    .filter(row -> !row.isNull(PAYLOAD_KEY))
                    .map(row -> readValue(row.getString(PAYLOAD_KEY), EventExecution.class))
                    .collect(Collectors.toList());
        } catch (DriverException e) {
            String errorMsg =
                    String.format(
                            "Failed to fetch event executions for event: %s, handler: %s",
                            eventName, eventHandlerName);
            LOGGER.error(errorMsg, e);
            throw new TransientException(errorMsg);
        }
    }

    @Override
    public void addTaskToLimit(TaskModel task) {
        try {
            recordCassandraDaoRequests(
                    "addTaskToLimit", task.getTaskType(), task.getWorkflowType());
            session.execute(
                    updateTaskDefLimitStatement.bind(
                            UUID.fromString(task.getWorkflowInstanceId()),
                            task.getTaskDefName(),
                            UUID.fromString(task.getTaskId())));
        } catch (DriverException e) {
            Monitors.error(CLASS_NAME, "addTaskToLimit");
            String errorMsg =
                    String.format(
                            "Error updating taskDefLimit for task - %s:%s in workflow: %s",

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Verify cluster health and that read consistency is satisfiable.
  2. Tune driver read timeouts and connection pool sizing.
  3. Depend on the built-in retry; examine the logged DriverException for recurring root causes.
  4. Lower read consistency if correctness allows, to reduce unavailable-read failures.
Defensive patterns

Strategy: retry

Try / catch

RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();
return retry.execute(ctx -> executionDAO.getEventExecutions(handlerName, eventName, messageId));

Prevention

When it happens

Trigger: Reading event executions by messageId + eventHandlerName fails at the driver level: read timeout, node unavailable, consistency not met.

Common situations: Read-heavy event inspection during cluster stress; mismatched RF and read consistency; driver pool saturation.

Related errors


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