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

Write Skew check must be performed only in the primary owner

    Details

      Description

      The following case can create data inconsistency:

      A: txA reads k with version v1 and writes on k (say valueA)
      primary-owner of k: txA acquire lock on k, validates and return v2 (increment(v1))
      non-primary-onwer of k: txA registers a backup lock, validates and returns v2 (increment(v1))

      A: txA commits with version v2.
      primary-owner of k: applies txA //commit in the non-primary-owner is delayed

      B: txB remote reads k with version v2 and writes on k (say valueB) and prepare the transaction
      primary-owner of k: txB waits until the lock is relased.
      non-primary-onwer of k: txA registers a backup lock, validates and returns v2 (increment(v1), because it has not applied the txA)

      primary-owner of k: lock is release, txB is validated and it return v3 (increment(v2))

      B collects all the response and merge them. However, the map.value() can return first the response from primary-owner (v3) and them the response from the non-primary-owner (v2). The result version map will be k=>v2.

      txB will update k with the same previous version and a different value. from here the data will become inconsistent.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                pruivo Pedro Ruivo
                Reporter:
                pruivo Pedro Ruivo
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: