conductor-oss/conductor · error · TransientException
Error creating/updating event handler: %s/%s
Error message
Error creating/updating event handler: %s/%s
What it means
Thrown by CassandraEventHandlerDAO.insertOrUpdateEventHandler when inserting/updating an event handler row fails. DriverException during session.execute(insertEventHandlerStatement.bind(...)) is wrapped in TransientException. Triggered by addEventHandler and updateEventHandler paths.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java:145
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
- Verify Cassandra is reachable and the session is healthy.
- Confirm the event_handler table and its columns match the prepared statement (re-run init if schema drifted).
- Retry the write — TransientException is retryable.
- If the handler JSON is large, check it is within Cassandra's text column / row size limits.
Defensive patterns
Strategy: validation
Validate before calling
// Validate the handler before persisting
if (eventHandler == null || isBlank(eventHandler.getName()) || isBlank(eventHandler.getEvent())) {
throw new IllegalArgumentException("event handler name and event required");
} Try / catch
try {
dao.addEventHandler(eventHandler);
} catch (TransientException e) {
log.warn("Transient failure storing handler {}; retrying", eventHandler.getName());
throw e; Prevention
- Validate handler name/event are non-blank before insert.
- Retry TransientException with exponential backoff.
- Keep handler payloads small to avoid column-size limits.
When it happens
Trigger: Calling addEventHandler/updateEventHandler with a handler whose JSON is too large for the column, when Cassandra is unavailable, or when the write times out / exceeds consistency.
Common situations: Cassandra connectivity loss. Write timeout under load. Schema mismatch (table/columns missing). A very large EventHandler payload exceeding column limits.
Related errors
- Failed to remove event handler: %s
- Failed to get all event handlers
- Error creating %d tasks for workflow: %s
- Error updating task: %s in workflow: %s
- Error creating workflow: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/a3e3bb940f1de2fd.
Report an issue: GitHub.