Я использую Infinispan 7.2.5 с моим приложением Spring.
Я пытаюсь открыть транзакцию, заблокировать запись в кэше, выполнить некоторую логику и обновить запись в кэше в соответствии с моим 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>
Есть идеи, почему это происходит?