[ 
https://issues.apache.org/jira/browse/LUCENE-4975?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shai Erera updated LUCENE-4975:
-------------------------------

    Attachment: LUCENE-4975.patch

New patch changes how handlers work:

* Beasting found a seed which uncovered a major problem with their current 
operation. They were trying to be "too honest" with the index and e.g. 
revert/delete upon any exception that occurred.

* Thanks to MDW, Mike and I decided to keep the handlers simple -- if a handler 
successfully copies + syncs the revision files, then this is considered the 
"new revision".

* Kissing the index is now done not through IndexWriter, but rather deleting 
all files not referenced by last commit.
** That cleanup is a best-effort only ... if it fails, it just logs this 
information and not act on it. Cleanup can happen later too.

* That means that if you have a really nasty crazy IO system (like MDW 
sometimes acts), the Replicator is not the one that's going to care about it. 
The app will hit those weird errors in other places too, e.g. when it tries to 
refresh SearcherManager or perform search.
** These errors are not caused by the Replicator or bad handler operation. I.e. 
if the handler successfully called fsync(), yet the IO system decides to fail 
later ... that's really not the handler's problem.

* Therefore the handlers are now simpler, don't use IW (and the crazy need to 
rollback()), and once files were successfully copied + sync'd, no more 
exceptions can occur by the handler (except callback may fail, but that's ok).

* I also removed the timeout behavior the test employed -- now that 
ReplicationClient has isUpdateThreadAlive(), assertHandlerRevision loops as 
long as the client is alive. If there's a serious bug, test-framework will 
terminate the test after 2 hours ...

* ReplicationClient.startUpdateThread is nicer -- allows starting the thread if 
updateThread != null, but !isAlive.

Now beasting this patch.
                
> Add Replication module to Lucene
> --------------------------------
>
>                 Key: LUCENE-4975
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4975
>             Project: Lucene - Core
>          Issue Type: New Feature
>            Reporter: Shai Erera
>            Assignee: Shai Erera
>         Attachments: LUCENE-4975.patch, LUCENE-4975.patch, LUCENE-4975.patch, 
> LUCENE-4975.patch, LUCENE-4975.patch, LUCENE-4975.patch, LUCENE-4975.patch, 
> LUCENE-4975.patch, LUCENE-4975.patch, LUCENE-4975.patch, LUCENE-4975.patch, 
> LUCENE-4975.patch
>
>
> I wrote a replication module which I think will be useful to Lucene users who 
> want to replicate their indexes for e.g high-availability, taking hot backups 
> etc.
> I will upload a patch soon where I'll describe in general how it works.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

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

Reply via email to