点燃从备份节点读取的陈旧数据 [英] Ignite read stale data from backup node
本文介绍了点燃从备份节点读取的陈旧数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在IGNITE版本2.8.1上遇到了不一致的数据问题。我有三个节点作为群集运行,缓存配置为:
CacheConfiguration<String, Balance> cacheConfiguration = new CacheConfiguration<>(Balance.class.getSimpleName());
cacheConfiguration.setIndexedTypes(String.class, Balance.class);
cacheConfiguration.setSqlIndexMaxInlineSize(100);
cacheConfiguration.setSqlSchema("PUBLIC");
cacheConfiguration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
cacheConfiguration.setCacheMode(CacheMode.PARTITIONED);
cacheConfiguration.setBackups(4);
cacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
然后我有非常简单的代码来在循环中添加平衡:
for (int i = 0; i < 10000; i++) {
balance = balanceDao.findByKey(accountId, "USD");
balance.setQuantity(balance.getQuantity().add(BigDecimal.ONE));
balanceDao.save(balance);
}
在主节点上运行时,我的余额总是正确增加了10000,但是在备份节点上运行时,我的余额有时会增加到8k左右,有时会增加到9k左右。
如果将setWriteSynchronizationMode设置为PRIMARY_SYNC,并且将setReadFromBackup设置为False,我可以在所有节点上获得正确的平衡。
这是2.8.1上的错误还是我的配置有什么问题?
推荐答案
ifreadFromBackup == true
(默认值),可以读取备份节点上的陈旧值。将其设置为false
以避免过期读取。
这篇关于点燃从备份节点读取的陈旧数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文