У меня есть запрос, который извлекает миллионы строк (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)
. (Я не знаю, заняты ли узлы или что-то еще происходит).Драйвер java драйвера Datastax Cassandra 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 выполнять весь запрос или повторить попытку с текущей страницы, которая не удалась?
Я пытался что-то вроде этого:
@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();
}
}
где readReatries это число повторных попыток, что я attemp для выборки данных.
Какой у вас размер страницы? –
@fuggy_yama Я работаю с размером страницы в 100 строк. – juliccr