Я разрабатываю новый продукт, используя cassandra в качестве БД. Прямо сейчас установлен на одном ноутбуке для разработки Ubuntu 13.10 с ядром i7. У меня есть семейство столбцов и запрос. Этот запрос, выполненный в cqlsh, дает 33267 строк. Выполненный в моей java-программе с использованием java-драйвера datastax 2.0, некоторые выполнения дают правильные строки, другие попали в бесконечный цикл, снова и снова повторяя одни и те же строки:
while (!rs.isExhausted()) {
Row row = rs.one();
long hora = row.getDate(1).getTime();
String clave = row.getString(0);
List<Long> data = row.getList(2, Long.class);
ordenados.put(hora, new Object[]{clave, data.get(0) / 100000000.0, data.get(1)});
contador2 +=1;
if (Math.floor(contador2/1000.0) == contador2/1000.0) {
System.out.println("sitio "+ contador2+ " "+clave+ " "+hora);
}
}
При профилировании приложения я вижу конфликт блокировок между новыми рабочими потоками ввода-вывода, 98% времени тратится на метод sun.nio.ch.EPollArrayWrapper.poll. Кто-то сталкивался с этой проблемой и знает решение? Кто-нибудь может мне указать ссылку для загрузки cassandra-driver-core-2.0.0.src.jar, чтобы я мог отладить ошибку с источниками и сообщить в datastax? Это захватывающая технология, но впервые в моей карьере производственная БД дает мне такое ненадежное поведение. Кстати: в исходном запросе был порядок, который я удалил. С заказом я получил это исключение: Исключение в потоке «основной» com.datastax.driver.core.exceptions.InvalidQueryException: не удается выполнить запросы страниц как с ORDER BY, так и с ограничением IN для ключа раздела; надо либо убрать ORDER BY или IN и сортировать на стороне клиента, либо отключить пейджинг для этого запроса Когда вчера работал на похожих запросах и на cqlsh работает без проблем с порядком по добавленным. Я просто говорю об этой проблеме, потому что, возможно, оба связаны. С уважением