Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-8237

State transfer doesn't replace L1 entry with regular entry

    XMLWordPrintable

Details

    Description

      An L1 entry is preserved when the local node becomes an owner, it is only removed if the application removes the key explicitly. Otherwise state transfer overwrites the L1 entry with the entry received from a previous owner, making it immortal (assuming the original entry didn't have a lifespan/maxIdle).

      A transaction writing to a key while the local node is only a write owner will not remove the L1 metadata from the entry either, but it will set the PUT_FOR_STATE_TRANSFER flag in CommitManager. Since state transfer doesn't overwrite an entry tracked in CommitManager, that means the L1 entry is never replaced with an immortal entry.

      This started appearing in ConcurrentNonOverlappingLeaveTest once I changed TxDistributionInterceptor to cause a retry when the topology changes during commit (for ISPN-8195). There, the entry is first wrapped on the originator before it becomes the primary owner, and the commit happens multiple times, but neither seems to be required.

      Attachments

        Issue Links

          Activity

            People

              dberinde@redhat.com Dan Berindei (Inactive)
              dberinde@redhat.com Dan Berindei (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: