{"record":{"id":"bcf232a6b1259849","repo":"conductor-oss/conductor","slug":"failed-to-add-event-execution-for-event-s-handl","errorCode":null,"errorMessage":"Failed to add event execution for event: %s, handler: %s","messagePattern":"Failed to add event execution for event: (.+?), handler: (.+?)","errorType":"exception","errorClass":"TransientException","httpStatus":500,"severity":"error","filePath":"cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java","lineNumber":660,"sourceCode":"            String jsonPayload = toJson(eventExecution);\n            recordCassandraDaoEventRequests(\"addEventExecution\", eventExecution.getEvent());\n            recordCassandraDaoPayloadSize(\n                    \"addEventExecution\", jsonPayload.length(), eventExecution.getEvent(), \"n/a\");\n            return session.execute(\n                            insertEventExecutionStatement.bind(\n                                    eventExecution.getMessageId(),\n                                    eventExecution.getName(),\n                                    eventExecution.getId(),\n                                    jsonPayload))\n                    .wasApplied();\n        } catch (DriverException e) {\n            Monitors.error(CLASS_NAME, \"addEventExecution\");\n            String errorMsg =\n                    String.format(\n                            \"Failed to add event execution for event: %s, handler: %s\",\n                            eventExecution.getEvent(), eventExecution.getName());\n            LOGGER.error(errorMsg, e);\n            throw new TransientException(errorMsg);\n        }\n    }\n\n    @Override\n    public void updateEventExecution(EventExecution eventExecution) {\n        try {\n            String jsonPayload = toJson(eventExecution);\n            recordCassandraDaoEventRequests(\"updateEventExecution\", eventExecution.getEvent());\n            recordCassandraDaoPayloadSize(\n                    \"updateEventExecution\", jsonPayload.length(), eventExecution.getEvent(), \"n/a\");\n            session.execute(\n                    updateEventExecutionStatement.bind(\n                            eventExecutionsTTL,\n                            jsonPayload,\n                            eventExecution.getMessageId(),\n                            eventExecution.getName(),\n                            eventExecution.getId()));\n        } catch (DriverException e) {","sourceCodeStart":642,"sourceCodeEnd":678,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java#L642-L678","documentation":"addEventExecution wraps any DriverException in a TransientException with a message naming the event and handler. Event execution insert failures (timeouts, unavailability) are treated as retriable, so the framework RetryTemplate retries up to 3 times before propagating.","triggerScenarios":"Inserting an EventExecution row (event handler dispatch) fails at the driver level — Cassandra node down, write timeout, consistency not met, connection pool exhausted.","commonSituations":"High event-handler throughput saturating the driver pool; cluster degradation during a topology change; RF too low for the configured write consistency.","solutions":["Verify Cassandra cluster health and that write consistency is satisfiable by live replicas.","Tune driver connection pool size and write timeouts via cassandra.properties.","Rely on the built-in retry; if it persists, inspect the logged DriverException cause.","Reduce event handler burst rate or increase RF for the events table."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Framework RetryTemplate handles TransientException. For a manual call site:\nRetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();\nretry.execute(ctx -> { executionDAO.addEventExecution(eventExecution); return null; });","preventionTips":["Ensure the events table RF satisfies the write consistency under node loss.","Size the driver connection pool for peak event-handler throughput.","Alert on DriverException rates to catch cluster degradation early."],"tags":["cassandra","persistence","transient","driver","event-execution","retry","dao"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}