Datastax Cassandra Java驱动程序,未来结果集似乎返回一致的数据

时间:2016-05-22 01:15:39

标签: java cassandra datastax datastax-java-driver

我正在使用Cassandra Driver 3.0。当我异步读取数据时,我得到的数据是一致的。

例如:在给定的员工ID列表中,[id1,id2],我正在请求id1和id2的数据。我正在获取id1和id2的数据,有时还有id1和 id1 。这是不一致的。我提供了以下代码。你能帮忙吗?

public List<Employee> getEmployeeShortProfile(List<String> employeeIds) throws InterruptedException,
        ExecutionException {
    List<ResultSetFuture> rsFutureList = new ArrayList<ResultSetFuture>();
    List<Employee> EmployeeList = new ArrayList<Employee>();


    for (String EmployeeId : EmployeeIds) {

    //Please NOTE
    //preparedStatement.getbStGetShortProfileById() below in the code returns  the following prepared statement
    //client.getSession().prepare(
    //"select employee_id, company_name, company_icon_url, product_icon_image, company_display_name, employee_information, detail_description from samplekeysapce.tbl_master_employees where employee_id = ? limit 15");
    // FYI, I did not set the consistency level in the execute.

        BoundStatement bStGetShortProfileById = preparedStatement.getbStGetShortProfileById();

        logger.debug("... setting the short profile id ..."+EmployeeId);
        bStGetShortProfileById.bind(EmployeeId);
        Session session = client.getSession();
        ResultSetFuture rs = session.executeAsync(bStGetShortProfileById);
        rsFutureList.add(rs);
    }


    for(ResultSetFuture rsF : rsFutureList){
        ResultSet rs = rsF.getUninterruptibly();
        Iterator<Row> rowIterator = rs.iterator();
        Employee c = extractEmployee(rowIterator);
        if(c!= null){
            EmployeeList.add(c);

        }


    }
    return EmployeeList;
}

1 个答案:

答案 0 :(得分:0)

来自Datastax团队的Olivier Michallat(https://datastax-oss.atlassian.net/secure/ViewProfile.jspa?name=omichallat)能够帮助我们指出BoundStatement每次都需要是不同的实例。

我们验证了我们的代码,我们没有返回不同的BoundStatement实例。我们纠正了我们这边的代码,问题得到了解决。

我们与Datastax团队之间的对话就在https://datastax-oss.atlassian.net/browse/JAVA-1198

由于 https://stackoverflow.com/users/438154/sotirios-delimanolis获得支持。