conductor-oss/conductor · error · TransientException
Failed to update event execution for event: %s, handler: %s
Error message
Failed to update event execution for event: %s, handler: %s
What it means
updateEventExecution wraps DriverException in a TransientException identifying the event and handler. The update statement (with eventExecutionsTTL) is retried by the framework RetryTemplate because driver-level failures are expected to be transient.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java:685
String jsonPayload = toJson(eventExecution);
recordCassandraDaoEventRequests("updateEventExecution", eventExecution.getEvent());
recordCassandraDaoPayloadSize(
"updateEventExecution", jsonPayload.length(), eventExecution.getEvent(), "n/a");
session.execute(
updateEventExecutionStatement.bind(
eventExecutionsTTL,
jsonPayload,
eventExecution.getMessageId(),
eventExecution.getName(),
eventExecution.getId()));
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "updateEventExecution");
String errorMsg =
String.format(
"Failed to update event execution for event: %s, handler: %s",
eventExecution.getEvent(), eventExecution.getName());
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg);
}
}
@Override
public void removeEventExecution(EventExecution eventExecution) {
try {
recordCassandraDaoEventRequests("removeEventExecution", eventExecution.getEvent());
session.execute(
deleteEventExecutionStatement.bind(
eventExecution.getMessageId(),
eventExecution.getName(),
eventExecution.getId()));
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "removeEventExecution");
String errorMsg =
String.format(
"Failed to remove event execution for event: %s, handler: %s",
eventExecution.getEvent(), eventExecution.getName());View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Check Cassandra cluster status and write-consistency reachability.
- Tune DataStax driver pool/timeout settings and ensure adequate RF.
- Let the RetryTemplate handle transient blips; escalate only if retries are exhausted.
- Investigate the underlying DriverException logged at error level for the real cause.
Defensive patterns
Strategy: retry
Try / catch
RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();
retry.execute(ctx -> { executionDAO.updateEventExecution(eventExecution); return null; }); Prevention
- Tune driver write timeouts for event-execution updates.
- Keep RF aligned with the configured write consistency.
- Monitor event-handler backlog as an early signal of storage stress.
When it happens
Trigger: Updating an EventExecution row fails at the driver level during event-handler processing: write timeout, node unavailable, consistency not met.
Common situations: Cluster instability, GC pauses on Cassandra nodes, driver pool starvation under heavy event processing.
Related errors
- Failed to add event execution for event: %s, handler: %s
- Failed to remove event execution for event: %s, handler: %s
- Failed to fetch event executions 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/e22ecf5192f0becc.
Report an issue: GitHub.