【发布时间】:2014-10-06 13:23:32
【问题描述】:
我正在使用 JBoss EAP 6.0.1.GA (AS 7.1.3.Final) 和捆绑的 Infinispan 'Brahma' 5.1.8.Final。我已将 Infinispan 配置为使用隔离级别 = SERIALIZABLE 的复制同步缓存,并在缓存上启用批处理。
我正在运行的示例代码:
Cache<String, List> cache = cacheContainer.getCache();
cache.startBatch();
List data = cache.get(key);
data.add(some value);
cache.put(key, data);
cache.endBatch(true);
编辑 尽我所能尝试,如果 2 个节点同时调用同一个块,则数据列表经常只包含来自一个节点的数据。看起来这是各种隔离级别的“*读取”问题,我认为我通过将隔离级别设置为可序列化来保证不会发生这种情况。 /编辑
我也尝试过使用 AdvancedCache,我的代码首先会这样做以尽可能早地获得事务锁:
// javadocs on this flag seem to indicate this is a good idea if doing a get-update-put
Cache<String, List> cache = cacheContainer.getCache();
AdvancedCache<String, List> advancedCache =
cache.getAdvancedCache().withFlags(Flag.FORCE_WRITE_LOCK);
我也尝试过设置事务模式(NON_XA / Pessimistic),但如果我实际上没有使用 big-T 事务(因为使用批处理),我认为这并不重要?并且更改交易模式我仍然偶尔会看到上述情况)。
是否有一些我遗漏或不正确的代码或配置?
【问题讨论】:
标签: jboss7.x infinispan