Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-3042

Suspend commit on conflict

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.3.6, 1.4
    • core, mongomk

    Description

      A DocumentNodeStore cluster currently shows a conflict behavior, which
      is not intuitive. A modification may fail with a conflict even though
      before and after the conflict, the external change is not visible to
      the current session. There are two aspects to this issue.

      1) a modification may conflict with a change done on another cluster
      node, which is committed but not yet visible on the current cluster node.

      2) even after the InvalidItemStateException caused by the conflict, a
      refreshed session may still not see the external change.

      The first aspect is a fundamental design decision and cannot be changed
      easily.

      The second part can be addressed by suspending the commit until the external
      conflict becomes visible on the current cluster node. This would at least
      avoid the awkward situation where the external change is not visible after
      the InvalidItemStateException.

      The system would also become more deterministic. A commit currently goes
      into a number of retries with exponential back off, but there's no guarantee
      the external modification becomes visible within those retries.

      Attachments

        1. commit-graph.png
          119 kB
          Marcel Reutegger
        2. commit-graph-patched.png
          86 kB
          Marcel Reutegger
        3. OAK-3042.patch
          48 kB
          Marcel Reutegger
        4. OAK-3042.patch
          38 kB
          Marcel Reutegger

        Issue Links

          Activity

            People

              mreutegg Marcel Reutegger
              mreutegg Marcel Reutegger
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: