[ 
https://issues.apache.org/jira/browse/SOLR-5374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13802028#comment-13802028
 ] 

Hoss Man commented on SOLR-5374:
--------------------------------

bq.  it might not always be practical in a distributed system to have a version 
ordering across updates as it's likely to involve a single point of coordination

Ramkumar: I'm not sure i understand your comment.  The specific use case i'm 
targeting here is precisely the situation where there is already a an 
externally generated, per-document, version that we want to use to enforce that 
only "new" updates are processed.  see the issue description:

{panel}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) ...{panel}


bq.  In such cases, it might just suffice for the system if the versions were 
just equality comparable rather than having a strict ordering – i.e. update if 
the previous version equals what I expect, else reject the update

What you are describing sounds like what is already possible using Solr's 
existing optimistic concurrency features...

https://cwiki.apache.org/confluence/display/solr/Updating+Parts+of+Documents#UpdatingPartsofDocuments-OptimisticConcurrency

I'm trying to address use cases i've seen come up recently where the client app 
doesn't want to have to check, or keep track of, what's version is in the 
_index_ (in several cases because they are already keeping track in an 
independent authoritative data store) they just wants to add/replace a document 
only if it's "newer" then whatever version is currently in the index.

> Support user configured doc-centric versioning rules
> ----------------------------------------------------
>
>                 Key: SOLR-5374
>                 URL: https://issues.apache.org/jira/browse/SOLR-5374
>             Project: Solr
>          Issue Type: Improvement
>            Reporter: Hoss Man
>            Assignee: Hoss Man
>         Attachments: SOLR-5374.patch
>
>
> 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.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to