Could not commit implicit transaction & RpcException
stehlik.michal Sep 13, 2017 6:31 AMHi All,
we have system deployed on customer site. Sometimes, based on unknown conditions, happened that we have exception in our workflow which forbid us to continue some critical operation. In our logs, we have following exception:
org.infinispan.commons.CacheException: Could not commit implicit transaction at org.infinispan.cache.impl.CacheImpl.tryCommit(CacheImpl.java:1738) at org.infinispan.cache.impl.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1692) at org.infinispan.cache.impl.CacheImpl.putInternal(CacheImpl.java:1134) at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:1124) at org.infinispan.cache.impl.DecoratedCache.put(DecoratedCache.java:453)
Cache over which this exception happened has following settings:
<distributed-cache name="metadata" owners="5" mode="SYNC" deadlock-detection-spin="1000"> <store-as-binary keys="false" values="false"/> <transaction mode="NON_DURABLE_XA" locking="PESSIMISTIC" transaction-manager-lookup="org.infinispan.transaction.lookup.JBossStandaloneJTAManagerLookup" stop-timeout="30000" /> <locking isolation="READ_COMMITTED" acquire-timeout="60000" striping="false" concurrency-level="1000"/> <state-transfer enabled="true" timeout="2000000" /> </distributed-cache>
Infinispan version where this sometimes occurred is 8.2.6. We have also infinispan logs in separate file, there I can see detailed reason, why this issue occurred. Reason is following:
(InvocationContextInterceptor.java:136) - ISPN000136: Error executing command PrepareCommand, writing keys [31cc4536-49d7-4cb9-acbc-4ee0ae22374e:light] org.infinispan.util.concurrent.TimeoutException: Replication timeout at org.infinispan.remoting.transport.jgroups.JGroupsTransport.lambda$invokeRemotelyAsync$1(JGroupsTransport.java:639) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.CompletableFuture.uniApply(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.complete(Unknown Source) ~[?:1.8.0_71] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:61) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:16) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_71] at java.lang.Thread.run(Unknown Source) [?:1.8.0_71] Suppressed: org.infinispan.remoting.RpcException: Not accepted: null at org.infinispan.remoting.transport.jgroups.JGroupsTransport.addSuppressedExceptions(JGroupsTransport.java:694) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.JGroupsTransport.lambda$invokeRemotelyAsync$1(JGroupsTransport.java:639) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.CompletableFuture.uniApply(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.complete(Unknown Source) ~[?:1.8.0_71] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:61) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:16) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_71] at java.lang.Thread.run(Unknown Source) [?:1.8.0_71] Suppressed: org.infinispan.remoting.RpcException: Not accepted: null at org.infinispan.remoting.transport.jgroups.JGroupsTransport.addSuppressedExceptions(JGroupsTransport.java:694) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.JGroupsTransport.lambda$invokeRemotelyAsync$1(JGroupsTransport.java:639) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.CompletableFuture.uniApply(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.complete(Unknown Source) ~[?:1.8.0_71] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:61) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:16) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_71] at java.lang.Thread.run(Unknown Source) [?:1.8.0_71] Suppressed: org.infinispan.remoting.RpcException: Not accepted: null at org.infinispan.remoting.transport.jgroups.JGroupsTransport.addSuppressedExceptions(JGroupsTransport.java:694) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.JGroupsTransport.lambda$invokeRemotelyAsync$1(JGroupsTransport.java:639) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.CompletableFuture.uniApply(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.CompletableFuture.complete(Unknown Source) ~[?:1.8.0_71] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:61) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at org.infinispan.remoting.transport.jgroups.RspListFuture.call(RspListFuture.java:16) ~[infinispan-embedded-8.2.6.Final.jar:8.2.6.Final] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_71] at java.lang.Thread.run(Unknown Source) [?:1.8.0_71]
I don't understand why this happened as well as conditions when this happened is not clear to me, since this is deep in Infinispan & Jgroups implementation. How to avoid such state? Will it helps if we create explicit transaction and commit it? I think, main reason why this happened is RpcException: Not accepted: null, am I right?: t accepted: null