Запрос Кассандры с использованием Кундеры иногда дает устаревшие данные - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть три узла Cassandra с коэффициентом репликации пространства ключей, установленным на 3. В Kundera EntityManager я установил для свойства consistency.level значение QUORUM.

Иногда, когда происходит последовательная запись и чтение одной и той же записи в базе данных, я вижу, что чтение получает устаревшие данные.Когда я вручную проверяю базу данных, в записи появляются новые данные.См. Аналогичную проблему и после вставки новой записи, периодически при последующем чтении не удается найти запись в базе данных.Если я проверю вручную, запись существует.Попытался добавить flush () после каждого persist (), но это не помогло.Если после выполнения операции persist () менеджера сущностей я помещаю спящий код в код, то при последующем чтении всегда получаются новые данные.

Я где-то читал, что по умолчанию Кундера является синхронным, поэтому операции записи должны блокироваться, пока не будет достигнута согласованность.Как проверить, что уровень согласованности действительно действует для операций записи и чтения?Если я читаю свойства EntityManager в моем коде, он возвращает {consistency.level = QUORUM}.Я также попробовал следующее, но это не помогло.

@PersistenceContext(type = PersistenceContextType.EXTENDED, properties = {@PersistenceProperty(name="consistency.level", value="QUORUM")})
EntityManager entityManager;

Есть идеи, как это исправить?Спасибо.

Cassandra версии 3.11 и Kundera версии 3.12 (также пробовали с Kundera 3.13).

...