I have Infinispan 9.4 and this settings in infinispan.xml:
<local-cache name="localCache">
<locking isolation="READ_COMMITTED"/>
<transaction mode="BATCH"/>
<memory>
<object strategy="NONE"/>
</memory>
</local-cache>
and when i try to add new value in this cache in the transaction but in the beforeCompletion phase
tx.registerSynchronization(new Synchronization()
{
...
public void beforeCompletion()
{
cache.put(CACHE_KEY, value);
}
...
}
i got this exception:
...
at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76) ~[jbossjts-4.16.6.Final.jar:?]
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:273) ~[jbossjts-4.16.6.Final.jar:?]
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:93) ~[jbossjts-4.16.6.Final.jar:?]
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:164) ~[jbossjts-4.16.6.Final.jar:?]
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1165) ~[jbossjts-4.16.6.Final.jar:?]
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:117) ~[jbossjts-4.16.6.Final.jar:?]`
...
ERROR impl.InvocationContextInterceptor - ISPN000136: Error executing command PutKeyValueCommand on Cache 'localCache', writing keys [storage]
java.lang.UnsupportedOperationException: null
at org.infinispan.commons.util.ImmutableListCopy.add(ImmutableListCopy.java:124) ~[infinispan-commons-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.transaction.impl.LocalTransaction.addModification(LocalTransaction.java:66) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.TxInterceptor.lambda$handleWriteCommand$8(TxInterceptor.java:414) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndFinally(BaseAsyncInterceptor.java:165) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.TxInterceptor.handleWriteCommand(TxInterceptor.java:402) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:235) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:73) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:56) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.CacheMgmtInterceptor.updateStoreStatistics(CacheMgmtInterceptor.java:217) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.CacheMgmtInterceptor.visitPutKeyValueCommand(CacheMgmtInterceptor.java:182) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:73) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:125) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:90) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:58) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.BatchingInterceptor.handleDefault(BatchingInterceptor.java:69) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.BatchingInterceptor.visitPutKeyValueCommand(BatchingInterceptor.java:49) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:73) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.DDAsyncInterceptor.visitCommand(DDAsyncInterceptor.java:50) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:248) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.cache.impl.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1915) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:1430) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:2040) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:230) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.cache.impl.AbstractDelegatingCache.put(AbstractDelegatingCache.java:448) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Final]
at org.infinispan.cache.impl.EncoderCache.put(EncoderCache.java:729) ~[infinispan-core-9.4.24.Final.jar:9.4.24.Fina
i checked - if i do it without a beforeCompletion phase - it's ok.
But i need execute this in this phase - how i can fix it?