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

  1. Check Cassandra cluster status and write-consistency reachability.
  2. Tune DataStax driver pool/timeout settings and ensure adequate RF.
  3. Let the RetryTemplate handle transient blips; escalate only if retries are exhausted.
  4. 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

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


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