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

Diff traversal in persisted branch commit traversing to unrelated paths

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • None
    • 1.5.13, 1.6.0
    • documentmk
    • None

    Description

      With DocumentNodeStore when a commit involves a persisted branch the diff logic traverses to those paths which are not affected by the current commit. For e.g. in following flow

      1. Commit C1 (base rev R1) - Starts and modifies paths under /content. The number of changes done exceed the update.limit and hence the in memory branch transitions to Persisted state
      2. Before C1 commits another commit C2 starts and modified paths under /etc and /var
      3. C2 commits (before C1). Head revision R2
      4. C1 commits and perform the merge. Revision moves to R3

      Now at #4 the merge would trigger a diff which should normally traverse and perform diff for those paths which are modified by C1. However currently it seems to also perform diff on all those paths which have been modified after R1 and R3. In doing so it would traverse the complete sub trees of such paths. Note that functionally the end result is same just that too many extra nodes are read which would put load on system

      If the number of changes are reduced such that persisted branch is not created then diff only reads those parts which are modified by the current commit.

      Attachments

        Issue Links

          Activity

            People

              mreutegg Marcel Reutegger
              chetanm Chetan Mehrotra
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: