Uploaded image for project: 'Jackrabbit FileVault'
  1. Jackrabbit FileVault
  2. JCRVLT-85

Import behaviour not always correct in case of conflicting node IDs

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1.16
    • 3.5.4
    • Packaging
    • None

    Description

      There are two issue with conflicting IDs:

      1. DocViewSAXImporter.addNode(DocViewNode) checks if an ID set in the node which is about to be imported to the JCR is already taken (https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L777). Unfortunately this check will completely skip the import if the conflicting node is a sibling of the to-be-imported node
      1. Since between the check for the conflicting node id and the actual import in DocViewSAXImporter.createNode(DocViewNode) there might be other JCR operations happening leading to a conflicting node the import behaviour set in https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L979 might still matter in edge cases.
        Currently it is using the ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING.
        According to the JCR Spec (http://www.day.com/specs/jcr/2.0/11_Import.html#11.8.2%20Remove%20Existing%20Node) that means the node with the same ID is first removed from the repo (no matter where it is located), then the new node one is imported with that ID.
        That is a problem, if by coincidence the ID 1 is used for node /content/a in the repository and now you install a package containing /content/b also having the ID 1. Then the package would remove the /content/a node from the repository, although this is not intended. I would rather recommend using ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW.

      Attachments

        Issue Links

          Activity

            People

              kwin Konrad Windszus
              kwin Konrad Windszus
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: