使用Cassandra重试策略来减小访存大小

时间:2019-05-15 10:11:21

标签: cassandra datastax-java-driver

由于异常情况和应用程序逻辑中的错误,数据在表中被多次写入和删除,导致逻辑删除/生存率非常高。这导致使用默认提取大小的服务器端读取超时。我的问题是,对语句进行更改是否会在重试策略回调中允许使用,这会产生任何影响吗?像

public class MyRetryPolicy implements RetryPolicy {
    private static final int MIN_FETCH_SIZE = 1000;

    @Override
    public RetryDecision onReadTimeout(Statement statement, ConsistencyLevel cl, int requiredResponses, int receivedResponses, boolean dataRetrieved, int nbRetry) {
        if (receivedResponses < requiredResponses && statement.getFetchSize() > MIN_FETCH_SIZE) {
            statement.setFetchSize(Math.max(MIN_FETCH_SIZE, statement.getFetchSize() / 2));
            return RetryDecision.retry(cl);
        } else {
            return RetryDecision.rethrow();
        }
    }

    ...

问题仅涉及某些令牌范围,更像一次性的事情,因此不想永久减小所有读取的读取大小。

0 个答案:

没有答案