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

Two concurrent putIfAbsent operations can both return null during rebalance

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Critical Critical
    • None
    • 6.0.2.Final
    • Core, State Transfer

      If the cache topology changes while executing a putIfAbsent operation, the old primary owner will throw an OutdatedTopologyException, and the originator will retry on the new owner.

      When retrying the PutKeyValueCommand on the new primary owner, we compare the current value with the command's new value. If they are equal, we assume that the initial command wrote the old value, and we return null.

      However, the value might have been written by another putIfAbsent operation. So we could have two putIfAbsent(k, v) operations, both returning null.

      A is the originator, B is the primary owner, k = null
      A -> B: putIfAbsent(k, v1)
      B dies before writing v, C is now primary owner
      D -> C: putIfAbsent(k, v1) // another put operation from D, with the same value
      C -> D: null // correct
      A -> C: retry_putIfAbsent(k, v1)
      C -> A: null // C assumes A is overwriting its own value, so it's also returning null
      

            [ISPN-4286] Two concurrent putIfAbsent operations can both return null during rebalance

            Dan Berindei (Inactive) created issue -
            Dan Berindei (Inactive) made changes -
            Link New: This issue is related to ISPN-3422 [ ISPN-3422 ]
            Dan Berindei (Inactive) made changes -
            Link New: This issue is related to ISPN-3918 [ ISPN-3918 ]
            Dan Berindei (Inactive) made changes -
            Link New: This issue relates to ISPN-2956 [ ISPN-2956 ]
            Vlastimil Eliáš made changes -
            Workflow Original: GIT Pull Request workflow [ 12600885 ] New: GIT Pull Request with Triage workflow [ 12613126 ]
            Dan Berindei (Inactive) made changes -
            Assignee Original: Dan Berindei [ dberinde@redhat.com ]
            Galder Zamarreño made changes -
            Fix Version/s New: 7.1.0.Alpha1 [ 12325977 ]
            Fix Version/s Original: 7.0.0.Final [ 12319335 ]
            Dan Berindei (Inactive) made changes -
            Priority Original: Major [ 3 ] New: Critical [ 2 ]
            RH Bugzilla Integration made changes -
            Dan Berindei (Inactive) made changes -
            Assignee New: Dan Berindei [ dberinde@redhat.com ]
            Pedro Ruivo made changes -
            Fix Version/s New: 7.1.0.Beta1 [ 12325979 ]
            Fix Version/s Original: 7.1.0.Alpha1 [ 12325977 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 7.1.0.CR1 [ 12325978 ]
            Fix Version/s Original: 7.1.0.Beta1 [ 12325979 ]
            Vladimir Blagojevic (Inactive) made changes -
            Fix Version/s New: 7.1.0.Final [ 12325807 ]
            Fix Version/s Original: 7.1.0.CR2 [ 12325978 ]
            Will Burns made changes -
            Fix Version/s New: 7.2.0.Alpha1 [ 12326576 ]
            Fix Version/s Original: 7.1.0.Final [ 12325807 ]
            Adrian Nistor (Inactive) made changes -
            Fix Version/s New: 7.2.0.Beta1 [ 12326574 ]
            Fix Version/s Original: 7.2.0.Alpha1 [ 12326576 ]
            Dan Berindei (Inactive) made changes -
            Fix Version/s New: 7.2.0.Beta2 [ 12326577 ]
            Fix Version/s Original: 7.2.0.Beta1 [ 12326574 ]
            Galder Zamarreño made changes -
            Fix Version/s New: 7.2.0.CR1 [ 12326575 ]
            Fix Version/s Original: 7.2.0.Beta2 [ 12326577 ]
            Gustavo Fernandes (Inactive) made changes -
            Fix Version/s New: 7.2.0.Final [ 12325808 ]
            Fix Version/s Original: 7.2.0.CR1 [ 12326575 ]
            Pedro Ruivo made changes -
            Fix Version/s New: 8.0.0.Final [ 12319336 ]
            Fix Version/s Original: 7.2.0.Final [ 12325808 ]
            Pedro Ruivo made changes -
            Fix Version/s New: 8.1.0.Final [ 12326665 ]
            Fix Version/s Original: 8.0.0.Final [ 12319336 ]
            Adrian Nistor (Inactive) made changes -
            Fix Version/s New: 8.2.0.Alpha1 [ 12328080 ]
            Fix Version/s Original: 8.1.0.Final [ 12326665 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 8.2.0.Beta1 [ 12328082 ]
            Fix Version/s Original: 8.2.0.Alpha1 [ 12328080 ]
            Dan Berindei (Inactive) made changes -
            Fix Version/s New: 8.2.0.CR1 [ 12328084 ]
            Fix Version/s Original: 8.2.0.Beta1 [ 12328082 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 8.2.0.CR1 [ 12328083 ]
            Fix Version/s Original: 8.2.0.Beta2 [ 12328084 ]
            Gustavo Fernandes (Inactive) made changes -
            Fix Version/s New: 8.2.0.Final [ 12326666 ]
            Fix Version/s Original: 8.2.0.CR1 [ 12328083 ]
            Pedro Ruivo made changes -
            Fix Version/s New: 9.0.0.Alpha1 [ 12329539 ]
            Fix Version/s Original: 8.2.0.Final [ 12326666 ]
            Vittorio Rigamonti made changes -
            Fix Version/s New: 9.0.0.Alpha2 [ 12330029 ]
            Fix Version/s Original: 9.0.0.Alpha1 [ 12329539 ]
            Tristan Tarrant made changes -
            Fix Version/s Original: 9.0.0.Alpha2 [ 12330029 ]
            Fix Version/s New: 9.0.0.Alpha3 [ 12330031 ]
            Dan Berindei (Inactive) made changes -
            Link New: This issue relates to ISPN-6451 [ ISPN-6451 ]
            Vladimir Blagojevic (Inactive) made changes -
            Fix Version/s New: 9.0.0.Alpha4 [ 12330032 ]
            Fix Version/s Original: 9.0.0.Alpha3 [ 12330031 ]
            Will Burns made changes -
            Fix Version/s New: 9.0.0.Beta1 [ 12330025 ]
            Fix Version/s Original: 9.0.0.Alpha4 [ 12330032 ]
            Radim Vansa (Inactive) made changes -
            Labels New: consistence
            Radim Vansa (Inactive) made changes -
            Labels Original: consistence New: consistency
            Tristan Tarrant made changes -
            Fix Version/s New: 9.0.0.Beta2 [ 12330026 ]
            Fix Version/s Original: 9.0.0.Beta1 [ 12330025 ]
            Galder Zamarreño made changes -
            Fix Version/s New: 9.0.0.Beta3 [ 12330028 ]
            Fix Version/s Original: 9.0.0.Beta2 [ 12330026 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.0.0.CR1 [ 12330027 ]
            Fix Version/s Original: 9.0.0.Beta3 [ 12330028 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.0.0.CR2 [ 12330030 ]
            Fix Version/s Original: 9.0.0.CR1 [ 12330027 ]
            Pedro Ruivo made changes -
            Fix Version/s New: 9.0.0.CR3 [ 12333836 ]
            Fix Version/s Original: 9.0.0.CR2 [ 12330030 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.0.0.Final [ 12326667 ]
            Fix Version/s Original: 9.0.0.CR3 [ 12333836 ]
            Radim Vansa (Inactive) made changes -
            Link New: This issue is incorporated by ISPN-7590 [ ISPN-7590 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.1.0.Final [ 12330024 ]
            Fix Version/s Original: 9.0.0.Final [ 12326667 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.2.0.Final [ 12335135 ]
            Fix Version/s Original: 9.1.0.Final [ 12330024 ]
            Dan Berindei (Inactive) made changes -
            Link Original: This issue relates to ISPN-6451 [ ISPN-6451 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.3.0.Final [ 12336209 ]
            Fix Version/s Original: 9.2.0.Final [ 12335135 ]
            Galder Zamarreño made changes -
            Fix Version/s New: 9.4.0.Final [ 12337827 ]
            Fix Version/s Original: 9.3.0.Final [ 12336209 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.0.Final [ 12339172 ]
            Fix Version/s Original: 9.4.0.CR3 [ 12337827 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.1.Final [ 12339377 ]
            Fix Version/s Original: 9.4.0.Final [ 12339172 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.2.Final [ 12339657 ]
            Fix Version/s Original: 9.4.1.Final [ 12339377 ]
            Dan Berindei (Inactive) made changes -
            Fix Version/s New: 9.4.3.Final [ 12339982 ]
            Fix Version/s Original: 9.4.2.Final [ 12339657 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.4.Final [ 12340019 ]
            Fix Version/s Original: 9.4.3.Final [ 12339982 ]
            Galder Zamarreño made changes -
            Fix Version/s New: 9.4.5.Final [ 12340168 ]
            Fix Version/s Original: 9.4.4.Final [ 12340019 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.6.Final [ 12340282 ]
            Fix Version/s Original: 9.4.5.Final [ 12340168 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.7.Final [ 12340571 ]
            Fix Version/s Original: 9.4.6.Final [ 12340282 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 9.4.8.Final [ 12340779 ]
            Fix Version/s Original: 9.4.7.Final [ 12340571 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 10.0.0.Final [ 12332894 ]
            Fix Version/s Original: 9.4.8.Final [ 12340779 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 10.0.1.Final [ 12343101 ]
            Fix Version/s Original: 10.0.0.Final [ 12332894 ]
            Tristan Tarrant made changes -
            Fix Version/s New: 10.1.0.Final [ 12342474 ]
            Fix Version/s Original: 10.0.1.Final [ 12343101 ]
            Tristan Tarrant made changes -
            Fix Version/s Original: 10.1.0.Final [ 12342474 ]
            Tristan Tarrant made changes -
            Assignee Original: Dan Berindei [ dberinde@redhat.com ]
            Tristan Tarrant made changes -
            Resolution New: Obsolete [ 10900 ]
            Status Original: Open [ 1 ] New: Closed [ 6 ]
            Pedro Zapata Fernandez made changes -
            Workflow Original: GIT Pull Request with Triage workflow [ 12613126 ] New: OJA-WF-BG [ 24700452 ]

              Unassigned Unassigned
              dberinde@redhat.com Dan Berindei (Inactive)
              Archiver:
              rhn-support-adongare Amol Dongare

                Created:
                Updated:
                Resolved:
                Archived: