使用Kundera的Cassandra查询有时会提供过时的数据

时间:2018-09-13 16:20:27

标签: cassandra consistency kundera

我有三个Cassandra节点,其键空间复制因子设置为3。在Kundera EntityManager中,我将consistency.level属性设置为QUORUM。

有时,当连续写入并读取数据库中的同一记录时,我看到读取的数据已过时。当我手动检入数据库时​​,记录中包含新数据。在插入新记录后,也会看到类似的问题,间歇地,后续读取无法在数据库中找到该记录。如果我手动检查该记录存在。尝试在每个persist()之后添加flush(),但这没有帮助。如果在实体管理器persist()操作之后在代码中进行睡眠,则后续读取将始终获取新数据。

我读到某个地方,默认情况下Kundera是同步的,因此写操作应该一直阻塞,直到实现一致性为止。如何验证一致性级别实际上已对写入和读取操作生效?如果我在代码中读回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上试用过)。

0 个答案:

没有答案