org.apache.solr.update.processor

## Class DocBasedVersionConstraintsProcessorFactory

- java.lang.Object
- - org.apache.solr.update.processor.UpdateRequestProcessorFactory
  - - org.apache.solr.update.processor.DocBasedVersionConstraintsProcessorFactory

- All Implemented Interfaces:
    UpdateRequestProcessorFactory.RunAlways, NamedListInitializedPlugin, SolrCoreAware

      public class DocBasedVersionConstraintsProcessorFactory
      extends UpdateRequestProcessorFactory
      implements SolrCoreAware, UpdateRequestProcessorFactory.RunAlways

  This Factory generates an UpdateProcessor that helps to enforce Version constraints on documents based on per-document version numbers using a configured name of a `versionField`. It should be configured on the "default" update processor somewhere before the DistributedUpdateProcessorFactory. As an example, see the solrconfig.xml that the tests use: solr/core/src/test-files/solr/collection1/conf/solrconfig-externalversionconstraint.xml

  When documents are added through this processor, if a document with the same unique key already exists in the collection, then the value of the `versionField` in the existing document is not less then the field value in the new document then the new document is rejected with a 409 Version Conflict error.

  In addition to the mandatory `versionField` init param, two additional optional init params affect the behavior of this factory:

  - `deleteVersionParam` - This string parameter controls whether this processor will intercept and inspect Delete By Id commands in addition to adding documents. If specified, then the value will specify the name of a request paramater which becomes mandatory for all Delete By Id commands. This param must then be used to specify the document version associated with the delete. If the version specified using this param is not greater then the value in the `versionField` for any existing document, then the delete will fail with a 409 Version Conflict error. When using this param, Any Delete By Id command with a high enough document version number to succeed will be internally converted into an Add Document command that replaces the existing document with a new one which is empty except for the Unique Key and `versionField` to keeping a record of the deleted version so future Add Document commands will fail if their "new" version is not high enough.
  - `ignoreOldUpdates` - This boolean parameter defaults to `false`, but if set to `true` causes any update with a document version that is not great enough to be silently ignored (and return a status 200 to the client) instead of generating a 409 Version Conflict error.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.solr.update.processor.UpdateRequestProcessorFactory

      `UpdateRequestProcessorFactory.RunAlways`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DocBasedVersionConstraintsProcessorFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `UpdateRequestProcessor` | `getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next)`
    `void` | `inform(SolrCore core)`
    `void` | `init(NamedList args)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DocBasedVersionConstraintsProcessorFactory

          public DocBasedVersionConstraintsProcessorFactory()

  - ### Method Detail

    - #### init

          public void init(NamedList args)

      Specified by:
        `init` in interface `NamedListInitializedPlugin`
      Overrides:
        `init` in class `UpdateRequestProcessorFactory`

    - #### getInstance

          public UpdateRequestProcessor getInstance(SolrQueryRequest req,
                                                    SolrQueryResponse rsp,
                                                    UpdateRequestProcessor next)

      Specified by:
        `getInstance` in class `UpdateRequestProcessorFactory`

    - #### inform

          public void inform(SolrCore core)

      Specified by:
        `inform` in interface `SolrCoreAware`

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.