conductor-oss/conductor · error · TransientException
Failed to get all event handlers
Error message
Failed to get all event handlers
What it means
Thrown by CassandraEventHandlerDAO.getAllEventHandlersFromDB when reading all event handler rows fails. DriverException during the SELECT is wrapped in TransientException. The method backs getAllEventHandlers() and getEventHandlersForEvent().
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java:128
@SuppressWarnings("unchecked")
private List<EventHandler> getAllEventHandlersFromDB() {
try {
ResultSet resultSet =
session.execute(selectAllEventHandlersStatement.bind(HANDLERS_KEY));
List<Row> rows = resultSet.all();
if (rows.size() == 0) {
LOGGER.info("No event handlers were found.");
return Collections.EMPTY_LIST;
}
return rows.stream()
.map(row -> readValue(row.getString(EVENT_HANDLER_KEY), EventHandler.class))
.collect(Collectors.toList());
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "getAllEventHandlersFromDB");
String errorMsg = "Failed to get all event handlers";
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg, e);
}
}
private void insertOrUpdateEventHandler(EventHandler eventHandler) {
try {
String handler = toJson(eventHandler);
session.execute(insertEventHandlerStatement.bind(eventHandler.getName(), handler));
recordCassandraDaoRequests("storeEventHandler");
recordCassandraDaoPayloadSize("storeEventHandler", handler.length(), "n/a", "n/a");
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "insertOrUpdateEventHandler");
String errorMsg =
String.format(
"Error creating/updating event handler: %s/%s",
eventHandler.getName(), eventHandler.getEvent());
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg, e);
}View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Confirm the Cassandra cluster is up and the session is open.
- Verify the event_handler table exists in the configured keyspace (init() ran).
- Retry — TransientException is retryable by design.
- If read timeouts recur, raise the driver read_timeout or add a secondary index/partition strategy.
Defensive patterns
Strategy: retry
Try / catch
try {
return dao.getAllEventHandlers();
} catch (TransientException e) {
log.warn("Transient read failure on event handlers; retrying");
throw e; Prevention
- Wrap read paths in a bounded retry for TransientException.
- Confirm the event_handler table is initialized at startup.
- Tune driver read timeouts if getAllEventHandlers times out under load.
When it happens
Trigger: Calling getAllEventHandlers() (or getEventHandlersForEvent) when the SELECT query fails — session unavailable, read timeout, coordinator down, or the event_handler table is missing.
Common situations: Cassandra cluster unreachable at query time. Schema not initialized. Heavy load causing read timeouts on the event_handler table. Driver pool exhaustion.
Related errors
- Failed to remove event handler: %s
- Error creating/updating event handler: %s/%s
- Failed to get in progress limit - %s:%s in workflow :%s
- Error getting task by id: %s
- Error creating %d tasks for workflow: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/b1bee7f0003bdf1b.
Report an issue: GitHub.