私は数百万行(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)
例外を返すので、私のノードはかなり忙しいようです。 (私は実際にノードがビジーであるか、何か他のことが起こっているかどうかはわかりません)。Datastax Cassandra java driverページングを伴うステートメントのRetryPolicy
は、これまでのところ私はすべてのカサンドラノードに高い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);
のようなクエリを実行するが、例外はまだスローされました。私の次の動きは、カスタムのRetryPolicyを試すことですが、誰かがreadTimeoutの再試行でクエリ全体が再実行されるか、失敗した現在のページから再試行するかどうかを教えてくれますか?
私はこのような何かをしようとしていた。
readReatriesは、私がデータをフェッチするattempますリトライ回数がある@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 {} ",nbRetry,readRetries);
return RetryDecision.retry(cl);
} else {
return RetryDecision.rethrow();
}
}
。
あなたのページサイズは? –
@fuggy_yama私は100行のページサイズで作業しています。 – juliccr