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
- Verify cluster health and that read consistency is satisfiable.
- Tune driver read timeouts and connection pool sizing.
- Depend on the built-in retry; examine the logged DriverException for recurring root causes.
- 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
- Tune read timeouts for event-execution scans.
- Ensure read consistency is satisfiable by live replicas.
- Alert on transient read failures during cluster topology changes.
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
- Failed to add event execution for event: %s, handler: %s
- Failed to update event execution for event: %s, handler: %s
- Failed to remove event execution for event: %s, handler: %s
- Failed to get workflow: %s
- Error updating taskDefLimit for task - %s:%s in workflow: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/61160c9bd65fd714.
Report an issue: GitHub.