{"record":{"id":"1b7b72839c0b7c59","repo":"conductor-oss/conductor","slug":"failed-to-remove-event-execution-for-event-s-ha","errorCode":null,"errorMessage":"Failed to remove event execution for event: %s, handler: %s","messagePattern":"Failed to remove 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":705,"sourceCode":"    }\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());\n            LOGGER.error(errorMsg, e);\n            throw new TransientException(errorMsg);\n        }\n    }\n\n    @VisibleForTesting\n    List<EventExecution> getEventExecutions(\n            String eventHandlerName, String eventName, String messageId) {\n        try {\n            return session\n                    .execute(selectEventExecutionsStatement.bind(messageId, eventHandlerName))\n                    .all()\n                    .stream()\n                    .filter(row -> !row.isNull(PAYLOAD_KEY))\n                    .map(row -> readValue(row.getString(PAYLOAD_KEY), EventExecution.class))\n                    .collect(Collectors.toList());\n        } catch (DriverException e) {\n            String errorMsg =\n                    String.format(\n                            \"Failed to fetch event executions for event: %s, handler: %s\",","sourceCodeStart":687,"sourceCodeEnd":723,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java#L687-L723","documentation":"removeEventExecution wraps DriverException in a TransientException naming the event and handler. Deletion failures are treated as retriable and the framework RetryTemplate retries up to 3 times.","triggerScenarios":"Deleting an EventExecution row fails at the driver level — node down, delete timeout, consistency not met.","commonSituations":"Cluster degradation; tombstone/compaction pressure causing delete latency; driver pool exhaustion.","solutions":["Confirm Cassandra health and that the delete consistency is reachable.","Monitor tombstone/compaction activity on the events table if deletes are slow/timing out.","Tune driver timeouts and rely on the framework retry; inspect the logged cause if it fails through.","Ensure RF supports the configured consistency under node loss."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();\nretry.execute(ctx -> { executionDAO.removeEventExecution(eventExecution); return null; });","preventionTips":["Watch tombstone/compaction pressure on the events table from frequent deletes.","Keep driver timeouts sized for delete latency.","Maintain RF high enough to tolerate node loss at the configured consistency."],"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"}