lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Per Steffensen (JIRA)" <>
Subject [jira] [Updated] (SOLR-3178) Versioning - optimistic locking
Date Thu, 03 May 2012 14:30:50 GMT


Per Steffensen updated SOLR-3178:

    Attachment: SOLR-3173_3178_3382_3428_plus.patch

Find attached SOLR-3173_3178_3382_3428_plus.patch

The patch fits on top of trunk revision 1332666 and is ready for commit.

Since last patch (SOLR_3173_3178_3382_plus.patch) I have made the following:
* Implemented test ClassicConsistencyHybridUpdateSemanticsSolrCloudTest verifying that partial
errors are propagated correctly in a cloud (ZK) setup, when an update document is not sent
directly to the Solr instance running the leader of the slice where the document is to be
stored, and the Solr instance therefore has to forward the document to the leader, and when
the leader forwards to replica. This made me discover the problems discribed in SOLR-3428,
which I had to fix in order to make the test green.
* Implemented tests (in JsonLoaderTest and CSVRequestHandlerTest) verifying that you can send
part references as claimed on
when you are sending JSON or CSV requests
* Documents for which a partial error occur on leader will not be forwarded to replica.
* Partial errors are now catched and collected for the entire request in DistributedUpdateProcessor,
but the actual version-check etc is still performed in DirectUpdateHandler2 (because that
is an per-document-level task)
* Added Apache License 2.0 text to all new files
* Added class-level-JavaDoc to all new classes 
* Removed a few unimportant changes

I will be leaving for an extended weekend now, and will not be available again before wedensday
next week. I will probably read and answer comments from time to time until saturday night,

I really really really hope to return to the great news about the patch having been committed.
I believe it is now really ready - well worked through features, well covered by tests and
all existing plus new tests are green. Great progress, maybe not perfection, but we can shape
the last edges later if we find any. Hope you will take the opportunity to commit before too
long, now that you have a patch based on a fairly new revision, to avoid having to many conflicts
to solve.

Just to avoid any mistakes - the patch covers SORL-3173, SORL-3178, SOLR-3382 and SOLR-3428.

Regards, Per Steffensen
> Versioning - optimistic locking
> -------------------------------
>                 Key: SOLR-3178
>                 URL:
>             Project: Solr
>          Issue Type: New Feature
>          Components: update
>    Affects Versions: 3.5
>         Environment: All
>            Reporter: Per Steffensen
>            Assignee: Per Steffensen
>              Labels: RDBMS, insert, locking, nosql, optimistic, uniqueKey, update, versioning
>             Fix For: 4.0
>         Attachments: SOLR-3173_3178_3382_3428_plus.patch, SOLR-3178.patch, SOLR_3173_3178_3382_plus.patch
>   Original Estimate: 168h
>  Remaining Estimate: 168h
> In order increase the ability of Solr to be used as a NoSql database (lots of concurrent
inserts, updates, deletes and queries in the entire lifetime of the index) instead of just
a search index (first: everything indexed (in one thread), after: only queries), I would like
Solr to support versioning to be used for optimistic locking.
> When my intent (see SOLR-3173) is to update an existing document, I will need to provide
a version-number equal to "the version number I got when I fetched the existing document for
update" plus one. If this provided version-number does not correspond to "the newest version-number
of that document at the time of update" plus one, I will get a VersionConflict error. If it
does correspond the document will be updated with the new one, so that "the newest version-number
of that document" is NOW one higher than before the update. Correct but efficient concurrency
> When my intent (see SOLR-3173) is to insert a new document, the version number provided
will not be used - instead a version-number 0 will be used. According to SOLR-3173 insert
will only succeed if a document with the same value on uniqueKey-field does not already exist.
> In general when talking about different versions of "the same document", of course we
need to be able to identify when a document "is the same" - that, per definition, is when
the values of the uniqueKey-fields are equal. 
> The functionality provided by this issue is only really meaningfull when you run with
"updateLog" activated.
> This issue might be solved more or less at the same time as SOLR-3173, and only one single
SVN patch might be given to cover both issues.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message