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

  1. Confirm the Cassandra cluster is up and the session is open.
  2. Verify the event_handler table exists in the configured keyspace (init() ran).
  3. Retry — TransientException is retryable by design.
  4. 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

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


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