Uploaded image for project: 'Red Hat Data Grid'
  1. Red Hat Data Grid
  2. JDG-4339

Conflict resolution fails in transactional cache

    XMLWordPrintable

Details

    • Bug
    • Status: Verified (View Workflow)
    • Major
    • Resolution: Done
    • RHDG 8.1 GA, RHDG 8.1.1 GA
    • RHDG 8.2 CD
    • Library
    • None

    Description

      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]
      

      Attachments

        Issue Links

          Activity

            People

              dberinde@redhat.com Dan Berindei
              dberinde@redhat.com Dan Berindei
              Diego Lovison Diego Lovison
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: