{"record":{"id":"dc44aac7c032d66f","repo":"conductor-oss/conductor","slug":"this-method-is-not-implemented-in-cassandraexecuti","errorCode":null,"errorMessage":"This method is not implemented in CassandraExecutionDAO. Please use ExecutionDAOFacade instead.","messagePattern":"This method is not implemented in CassandraExecutionDAO\\. Please use ExecutionDAOFacade instead\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":500,"severity":"error","filePath":"cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java","lineNumber":176,"sourceCode":"                        .setConsistencyLevel(properties.getWriteConsistencyLevel());\n    }\n\n    @Override\n    public List<TaskModel> getPendingTasksByWorkflow(String taskName, String workflowId) {\n        List<TaskModel> tasks = getTasksForWorkflow(workflowId);\n        return tasks.stream()\n                .filter(task -> taskName.equals(task.getTaskType()))\n                .filter(task -> TaskModel.Status.IN_PROGRESS.equals(task.getStatus()))\n                .collect(Collectors.toList());\n    }\n\n    /**\n     * This is a dummy implementation and this feature is not implemented for Cassandra backed\n     * Conductor\n     */\n    @Override\n    public List<TaskModel> getTasks(String taskType, String startKey, int count) {\n        throw new UnsupportedOperationException(\n                \"This method is not implemented in CassandraExecutionDAO. Please use ExecutionDAOFacade instead.\");\n    }\n\n    /**\n     * Inserts tasks into the Cassandra datastore. <b>Note:</b> Creates the task_id to workflow_id\n     * mapping in the task_lookup table first. Once this succeeds, inserts the tasks into the\n     * workflows table. Tasks belonging to the same shard are created using batch statements.\n     *\n     * @param tasks tasks to be created\n     */\n    @Override\n    public List<TaskModel> createTasks(List<TaskModel> tasks) {\n        validateTasks(tasks);\n        String workflowId = tasks.get(0).getWorkflowInstanceId();\n        UUID workflowUUID = toUUID(workflowId, \"Invalid workflow id\");\n        try {\n            WorkflowMetadata workflowMetadata = getWorkflowMetadata(workflowId);\n            int totalTasks = workflowMetadata.getTotalTasks() + tasks.size();","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java#L158-L194","documentation":"Thrown deliberately by CassandraExecutionDAO.getTasks(String taskType, String startKey, int count). It is an UnsupportedOperationException, not a runtime fault — the method is a dummy stub because querying in-progress tasks by type with paging is not implemented for Cassandra-backed Conductor. The message directs callers to ExecutionDAOFacade, which orchestrates cache + DAO lookups instead.","triggerScenarios":"Calling CassandraExecutionDAO.getTasks(taskType, startKey, count) directly. Any code path that invokes the raw ExecutionDAO.getTasks on the Cassandra implementation rather than going through ExecutionDAOFacade.","commonSituations":"Custom code or a plugin that obtained the Cassandra ExecutionDAO bean directly and called getTasks. A poll/sweep routine that was written against the Redis or in-memory DAO and reused against Cassandra. Migrating a deployment to Cassandra without updating direct DAO callers.","solutions":["Route the call through ExecutionDAOFacade.getTasks(...) instead of the raw CassandraExecutionDAO.","If you maintain custom scheduling code, inject ExecutionDAOFacade rather than the ExecutionDAO.","Keep the stub in mind: features relying on type-keyed task listing are unsupported on Cassandra — use a supported persistence backend if the feature is required."],"exampleFix":"// before\ncassandraExecutionDao.getTasks(taskType, startKey, count);\n\n// after\nexecutionDAOFacade.getTasks(taskType, startKey, count);","handlingStrategy":"validation","validationCode":"// Never call the raw Cassandra DAO for this operation; detect and route via the facade\nif (dao instanceof CassandraExecutionDAO) {\n    throw new UnsupportedOperationException(\"Use ExecutionDAOFacade.getTasks on Cassandra\");\n}","typeGuard":"static boolean supportsGetTasksByType(ExecutionDAO dao) {\n    return !(dao instanceof CassandraExecutionDAO);\n}","tryCatchPattern":"try {\n    dao.getTasks(type, start, count);\n} catch (UnsupportedOperationException e) {\n    log.warn(\"Raw DAO unsupported; routing through ExecutionDAOFacade\");\n    return facade.getTasks(type, start, count);\n}","preventionTips":["Always inject ExecutionDAOFacade, not the raw ExecutionDAO, for task queries.","Document that type-keyed task listing is unsupported on Cassandra.","Add an integration test that asserts getTasks routes through the facade on Cassandra."],"tags":["cassandra","not-implemented","execution-dao","task"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}