У меня есть пакетная работа, записывающая около 300 000 строк в кассандру. Я делю их на более мелкие партии, размер которых составляет 50 строк каждая.
Псевдокод ниже.
@Override
public void executeQuery(List<BatchStatement> batches) {
List<ResultSetFuture> futures = List.of();
for (BatchStatement batch: batches) {
futures.add(session.executeAsync(batch));
}
for(ResultSetFuture rsf: futures) {
rsf.getUninterruptibly();
/* I have to add the following code to avoid WriteTimeoutException
try {
Thread.sleep(100);
} catch (InterruptedException e) {
logger.error("Thread.sleep", e);
}
*/
}
}
Я не знаю, почему без Thread.sleep он всегда дает исключение WriteTimeout. Как этого избежать?