Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-5374

Support user configured doc-centric versioning rules

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 4.6, 6.0
    • None
    • None

    Description

      The existing optimistic concurrency features of Solr can be very handy for ensuring that you are only updating/replacing the version of the doc you think you are updating/replacing, w/o the risk of someone else adding/removing the doc in the mean time – but I've recently encountered some situations where I really wanted to be able to let the client specify an arbitrary version, on a per document basis, (ie: generated by an external system, or perhaps a timestamp of when a file was last modified) and ensure that the corresponding document update was processed only if the "new" version is greater then the "old" version – w/o needing to check exactly which version is currently in Solr. (ie: If a client wants to index version 101 of a doc, that update should fail if version 102 is already in the index, but succeed if the currently indexed version is 99 – w/o the client needing to ask Solr what the current version)

      The idea Yonik brought up in SOLR-5298 (letting the client specify a _new_version_ that would be used by the existing optimistic concurrency code to control the assignment of the _version_ field for documents) looked like a good direction to go – but after digging into the way _version_ is used internally I realized it requires a uniqueness constraint across all update commands, that would make it impossible to allow multiple independent documents to have the same _version_.

      So instead I've tackled the problem in a different way, using an UpdateProcessor that is configured with user defined field to track a "DocBasedVersion" and uses the RTG logic to figure out if the update is allowed.

      Attachments

        1. SOLR-5374.patch
          11 kB
          Yonik Seeley
        2. SOLR-5374.patch
          70 kB
          Yonik Seeley
        3. SOLR-5374.patch
          55 kB
          Yonik Seeley
        4. SOLR-5374.patch
          36 kB
          Yonik Seeley
        5. SOLR-5374.patch
          39 kB
          Chris M. Hostetter
        6. SOLR-5374.patch
          36 kB
          Chris M. Hostetter

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            hossman Chris M. Hostetter
            hossman Chris M. Hostetter
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment