{"record":{"id":"61160c9bd65fd714","repo":"conductor-oss/conductor","slug":"failed-to-fetch-event-executions-for-event-s-ha","errorCode":null,"errorMessage":"Failed to fetch event executions for event: %s, handler: %s","messagePattern":"Failed to fetch event executions 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":726,"sourceCode":"\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\",\n                            eventName, eventHandlerName);\n            LOGGER.error(errorMsg, e);\n            throw new TransientException(errorMsg);\n        }\n    }\n\n    @Override\n    public void addTaskToLimit(TaskModel task) {\n        try {\n            recordCassandraDaoRequests(\n                    \"addTaskToLimit\", task.getTaskType(), task.getWorkflowType());\n            session.execute(\n                    updateTaskDefLimitStatement.bind(\n                            UUID.fromString(task.getWorkflowInstanceId()),\n                            task.getTaskDefName(),\n                            UUID.fromString(task.getTaskId())));\n        } catch (DriverException e) {\n            Monitors.error(CLASS_NAME, \"addTaskToLimit\");\n            String errorMsg =\n                    String.format(\n                            \"Error updating taskDefLimit for task - %s:%s in workflow: %s\",","sourceCodeStart":708,"sourceCodeEnd":744,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java#L708-L744","documentation":"getEventExecutions wraps DriverException in a TransientException naming the event and handler. Read failures while listing event executions are retried by the framework RetryTemplate because driver errors are transient.","triggerScenarios":"Reading event executions by messageId + eventHandlerName fails at the driver level: read timeout, node unavailable, consistency not met.","commonSituations":"Read-heavy event inspection during cluster stress; mismatched RF and read consistency; driver pool saturation.","solutions":["Verify cluster health and that read consistency is satisfiable.","Tune driver read timeouts and connection pool sizing.","Depend on the built-in retry; examine the logged DriverException for recurring root causes.","Lower read consistency if correctness allows, to reduce unavailable-read failures."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();\nreturn retry.execute(ctx -> executionDAO.getEventExecutions(handlerName, eventName, messageId));","preventionTips":["Tune read timeouts for event-execution scans.","Ensure read consistency is satisfiable by live replicas.","Alert on transient read failures during cluster topology changes."],"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"}