RHDG 8.1 Conflict resolution fails in transactional cache
Issue
If a user has both partition handling and conflict resolution enabled in a transactional distributed cache (locking-mode=PESSIMISTIC, num-owners=2, when-split=DENY_READ_WRITES, merge-policy=PREFERRED_NON_NULL).
Then two nodes leave and one node merges back. The conflict resolution starts but it fails with:
13:11:27,305+0100 ERROR [org.infinispan.conflict.impl.DefaultConflictManager] (non-blocking-thread--p2-t1) Cache org.infinispan.AdvancedCache encountered exception whilst trying to resolve conflicts on merge: java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Cannot create a transactional context without a valid Transaction instance.
13:11:27,307+0100 DEBUG [org.infinispan.CLUSTER] (non-blocking-thread--p2-t1) ISPN000524: Conflict resolution failed for cache C with topology CacheTopology{id=50, phase=CONFLICT_RESOLUTION, rebalanceId=15, currentCH=DefaultConsistentHash{ns=256, owners = (3)[D-32271: 128+128, C-48322: 64+64, A-7433: 64+64]}, pendingCH=null, unionCH=null, actualMembers=[D-32271, C-48322, A-7433], persistentUUIDs=[00355068-c9b0-465f-9be8-3bb214f7af74, 8a353c3d-8d9f-41b4-a3ae-81cb15336e0a, 07936251-a5c8-480b-ad24-fa6b804c60c5]}: java.lang.IllegalArgumentException: Cannot create a transactional context without a valid Transaction instance.
at org.infinispan.context.impl.TransactionalInvocationContextFactory.createInvocationContext(TransactionalInvocationContextFactory.java:63) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.InvocationHelper.createInvocationContextWithImplicitTransaction(InvocationHelper.java:174) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.InvocationHelper.lambda$new$0(InvocationHelper.java:47) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.DecoratedCache.writeContext(DecoratedCache.java:740) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.InvocationHelper.invokeAsync(InvocationHelper.java:129) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.CacheImpl.putAsync(CacheImpl.java:1398) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.DecoratedCache.putAsync(DecoratedCache.java:683) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.putAsync(AbstractDelegatingAdvancedCache.java:338) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.cache.impl.EncoderCache.putAsync(EncoderCache.java:456) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.conflict.impl.DefaultConflictManager.lambda$doResolveConflicts$7(DefaultConflictManager.java:324) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) [rt.jar:1.8.0_275]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) [rt.jar:1.8.0_275]
at org.infinispan.conflict.impl.DefaultConflictManager$ReplicaSpliterator.tryAdvance(DefaultConflictManager.java:498) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at java.util.Spliterator.forEachRemaining(Spliterator.java:326) [rt.jar:1.8.0_275]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) [rt.jar:1.8.0_275]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) [rt.jar:1.8.0_275]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) [rt.jar:1.8.0_275]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) [rt.jar:1.8.0_275]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [rt.jar:1.8.0_275]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485) [rt.jar:1.8.0_275]
at org.infinispan.conflict.impl.DefaultConflictManager.doResolveConflicts(DefaultConflictManager.java:282) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
at org.infinispan.conflict.impl.DefaultConflictManager.lambda$resolveConflicts$1(DefaultConflictManager.java:249) [infinispan-core-11.0.9.Final-redhat-00001.jar:11.0.9.Final-redhat-00001]
Environment
- Red Hat Data Grid (RHDG)
- 8.x
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.