小编jul*_*ccr的帖子

Datastax Cassandra java 驱动程序 RetryPolicy for Statement with paging

我正在运行一个查询来获取数百万行(5.000.000 左右)。我的节点似乎非常繁忙,因为协调器返回了com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency ONE (1 responses were required but only 0 replica responded)异常。(我真的不知道节点是否繁忙或发生其他事情)。

到目前为止,我已经尝试在每个 Cassandra 节点中设置更高的 read_request_timeout_in_millis ,并像这样执行查询

new SimpleStatement("SELECT * FROM where date = ? ",param1)
    .setFetchSize(pageSize).setConsistencyLevel(ConsistencyLevel.ONE)
    .setReadTimeoutMillis(ONE_DAY_IN_MILLIS);
ResultSet resultSet = this.session.execute(statement);
Run Code Online (Sandbox Code Playgroud)

但异常仍然被抛出。我的下一步是尝试自定义 RetryPolicy,但有人可以告诉我 readTimeout 重试是否会再次执行整个查询,还是会从失败的当前页面重试?

我正在尝试这样的事情:

@Override
public RetryDecision onReadTimeout(Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) {
    if (dataRetrieved) {
        return RetryDecision.ignore();
    } else if (nbRetry < readRetries) {
        LOGGER.info("Retry attemp {} out of …
Run Code Online (Sandbox Code Playgroud)

java cassandra datastax-java-driver

2
推荐指数
1
解决办法
1364
查看次数

标签 统计

cassandra ×1

datastax-java-driver ×1

java ×1