{"record":{"id":"e22ecf5192f0becc","repo":"conductor-oss/conductor","slug":"failed-to-update-event-execution-for-event-s-ha","errorCode":null,"errorMessage":"Failed to update event execution for event: %s, handler: %s","messagePattern":"Failed to update 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":685,"sourceCode":"            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) {\n            Monitors.error(CLASS_NAME, \"updateEventExecution\");\n            String errorMsg =\n                    String.format(\n                            \"Failed to update 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 removeEventExecution(EventExecution eventExecution) {\n        try {\n            recordCassandraDaoEventRequests(\"removeEventExecution\", eventExecution.getEvent());\n            session.execute(\n                    deleteEventExecutionStatement.bind(\n                            eventExecution.getMessageId(),\n                            eventExecution.getName(),\n                            eventExecution.getId()));\n        } catch (DriverException e) {\n            Monitors.error(CLASS_NAME, \"removeEventExecution\");\n            String errorMsg =\n                    String.format(\n                            \"Failed to remove event execution for event: %s, handler: %s\",\n                            eventExecution.getEvent(), eventExecution.getName());","sourceCodeStart":667,"sourceCodeEnd":703,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java#L667-L703","documentation":"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.","triggerScenarios":"Updating an EventExecution row fails at the driver level during event-handler processing: write timeout, node unavailable, consistency not met.","commonSituations":"Cluster instability, GC pauses on Cassandra nodes, driver pool starvation under heavy event processing.","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."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();\nretry.execute(ctx -> { executionDAO.updateEventExecution(eventExecution); return null; });","preventionTips":["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."],"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"}