【问题标题】:Consistency level ALL used while statement has consistency level TWO defined一致性级别 ALL 使用 while 语句定义了一致性级别 2
【发布时间】:2015-06-22 19:18:06
【问题描述】:

我们使用 java datastax cassandra 驱动程序2.1.2。我们使用的 Cassandra 版本是2.0.9

我们有使用QueryBuilder 构建的语句,我们正在为TWO 上的语句显式设置一致性级别。

Select selectStatement =  QueryBuilder.select().from(ARTICLES);
selectStatement.where(eq(ORGANIZATION_ID, organizationId));
selectStatement.setConsistencyLevel(ConsistencyLevel.TWO);

final ResultSet rs = session.execute(selectStatement);
//call to all() will be removed since it is enough to iterate over result set 
//and then you get pagination for free instead of loading everything in 
//memory
List<Row> rows = rs.all();  
for (final Row row : rows) {
   //do something with Row, convert to POJO
}

我们得到这样的异常:

com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency ALL (3 responses were required but only 2 replica responded)
com.datastax.driver.core.exceptions.ReadTimeoutException.copy (ReadTimeoutException.java:69)
com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException (DefaultResultSetFuture.java:259)
com.datastax.driver.core.ArrayBackedResultSet$MultiPage.prepareNextRow (ArrayBackedResultSet.java:279)
com.datastax.driver.core.ArrayBackedResultSet$MultiPage.isExhausted (ArrayBackedResultSet.java:239)
com.datastax.driver.core.ArrayBackedResultSet$1.hasNext (ArrayBackedResultSet.java:122)
com.datastax.driver.core.ArrayBackedResultSet.all (ArrayBackedResultSet.java:111)

我知道在 ResultSet 上调用 all() 会使其在内存中加载所有组织文章并使用它并在 cassandra 上创建负载。如 cmets 中所述,这将被删除。这可能会导致读取超时,但我仍然不明白为什么在异常消息中有ALL

问题是为什么当我们将原始语句设置为TWO 时,异常告诉我们使用一致性级别ALLall() 是否在内部做一些查询并默认使用 CL ALL

【问题讨论】:

  • 您运行的是哪个版本的 o c*?
  • 我们使用的是 Cassandra 2.0.9

标签: java cassandra datastax-java-driver cassandra-2.1


【解决方案1】:

您的问题几乎可以肯定是 https://issues.apache.org/jira/browse/CASSANDRA-7947 。您会看到未能执行读取修复的错误消息。它与您最初的一致性级别无关。这已在 2.1.3+ 中修复。

【讨论】:

  • 感谢解答和解释,我会增加驱动版本试试。
  • 您必须升级 cassandra,而不是驱动程序。检查发布的jira ptnapoleon ^^
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2018-06-13
  • 1970-01-01
  • 2021-10-16
相关资源
最近更新 更多