conductor-oss/conductor · error · TransientException
Error retrieving all workflow defs
Error message
Error retrieving all workflow defs
What it means
Thrown when a DriverException occurs while getAllWorkflowDefs scans the workflow-definition index and hydrates each entry via getWorkflowDef. Wrapped as TransientException - the listing could not be completed due to an infrastructure failure.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraMetadataDAO.java:296
LOGGER.info("No workflow definitions were found.");
return Collections.EMPTY_LIST;
}
return rows.stream()
.map(
row -> {
String defNameVersion =
row.getString(WORKFLOW_DEF_NAME_VERSION_KEY);
var nameVersion = getWorkflowNameAndVersion(defNameVersion);
return getWorkflowDef(nameVersion.getLeft(), nameVersion.getRight())
.orElse(null);
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "getAllWorkflowDefs");
String errorMsg = "Error retrieving all workflow defs";
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg, e);
}
}
@Override
public List<WorkflowDef> getAllWorkflowDefsLatestVersions() {
try {
ResultSet resultSet =
session.execute(
selectAllWorkflowDefsLatestVersionsStatement.bind(
WORKFLOW_DEF_INDEX_KEY));
List<Row> rows = resultSet.all();
if (rows.size() == 0) {
LOGGER.info("No workflow definitions were found.");
return Collections.EMPTY_LIST;
}
Map<String, PriorityQueue<WorkflowDef>> allWorkflowDefs = new HashMap<>();
for (Row row : rows) {View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Retry the listing call with backoff.
- Verify cluster health and read consistency can be satisfied.
- For very large definition sets, prefer paginated/latest-version endpoints over the full scan.
- Inspect the wrapped DriverException for the root driver error.
Example fix
// before: one-shot full listing
List<WorkflowDef> all = metadataDAO.getAllWorkflowDefs();
// after: retry transient listing failures
List<WorkflowDef> all = RetryUtils.retryOn(TransientException.class, 3,
Duration.ofMillis(200), metadataDAO::getAllWorkflowDefs); Defensive patterns
Strategy: retry
Validate before calling
// Pre-flight: check session health before a full listing
if (cassandraSession.isClosed()) {
throw new IllegalStateException("Cassandra session is closed; cannot list workflow defs");
} Try / catch
// Retry the full listing on transient failure
try {
return metadataDAO.getAllWorkflowDefs();
} catch (TransientException e) {
return backoffAndRetry(metadataDAO::getAllWorkflowDefs, 3);
} Prevention
- Retry full listings on TransientException with backoff.
- Prefer paginated/latest-version endpoints for large definition sets.
- Keep read consistency and timeouts sized for wide index scans.
- Cache listing results short-term to cut driver load.
When it happens
Trigger: The SELECT on the workflow_def index (selectAllWorkflowDefsStatement) or one of the per-entry getWorkflowDef reads raises a DriverException during the full listing.
Common situations: Large index scanned during a cluster degradation; read timeout because many rows must be hydrated; a single unavailable replica fails the read consistency.
Related errors
- Error retrieving all workflow defs latest versions
- Error creating workflow definition: %s/%d
- Error updating workflow definition: %s/%d
- Error fetching workflow def: %s/%d
- Failed to remove workflow definition: %s/%d
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/b19408fad66d8c0c.
Report an issue: GitHub.