2016-05-22 19 views
1

Ich benutze Cassandra Driver 3.0. Wenn ich Daten asynchron lese, bekomme ich die Daten konsistent.Datastax Cassandra Java-Treiber, zukünftige Ergebnismenge scheint in konsistenten Daten zurückzukehren

Zum Beispiel: In der angegebenen Liste von Mitarbeiter-IDs, [ID1, ID2], fordere ich die Daten für ID1 und ID2. Ich bekomme Daten für ID1 und ID2 und manchmal ID1 und ID1. Dies ist inkonsistent. Ich habe den folgenden Code zur Verfügung gestellt. Können Sie bitte helfen?

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; 
} 
+0

assoziierte Jira-Ticket für Querverweise: https://datastax-oss.atlassian.net/browse/JAVA-1198 –

+0

Vielen Dank Sotirios Delimanolis – fsheriff

Antwort

0

Olivier Michallat vom DataStax Team (https://datastax-oss.atlassian.net/secure/ViewProfile.jspa?name=omichallat) war in der Lage, uns zu helfen hinweisen, dass BoundStatement jedes Mal andere Instanz sein muss.

Wir haben unseren Code verifiziert, wir haben keine andere BoundStatement-Instanz zurückgegeben. Wir haben den Code auf unserer Seite korrigiert und das Problem ist gelöst.

Das Gespräch zwischen uns und dem Datastax-Team ist hier https://datastax-oss.atlassian.net/browse/JAVA-1198.

Danke https://stackoverflow.com/users/438154/sotirios-delimanolis für die Unterstützung.