点燃从备份节点读取的陈旧数据 [英] Ignite read stale data from backup node

查看:23
本文介绍了点燃从备份节点读取的陈旧数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆