我在Spring应用程序中使用的是Infinispan 7.2.5。
我尝试打开事务,锁定缓存条目,执行一些逻辑并根据我的BL更新缓存条目-这意味着我使用 .put 方法,并设置了更新的缓存条目的值+新寿命。最后,我提交了交易。
transactionManager.begin();
Object myValue = myCache.withFlags(Flag.FORCE_WRITE_LOCK).get(key);
// Doing some BL
myCache.withFlags(Flag.IGNORE_RETURN_VALUES).put(key, newValue, newLifeSpan, TimeUnit.MILLISECONDS);
transactionManager.commit();
问题在于,在交易中,Inifispan无法将使用期限更改为新使用期限,并在原始使用期限时间逐出该条目。 我尝试不进行交易就执行相同的过程,而且一切正常。
我的缓存设置为:
<replicated-cache name="myCache" mode="SYNC">
<locking isolation="REPEATABLE_READ"/>
<transaction transaction-manager-lookup="org.inifnispan.transaction.lookup.GenericTransactionManagerLookup" locking="PESSIMISTIC" mode="FULL_XA"/>
</replicated-cache>
知道为什么会这样吗?