You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Michael McCandless (JIRA)" <ji...@apache.org> on 2015/06/04 11:17:38 UTC

[jira] [Updated] (LUCENE-6524) Create an IndexWriter from an already opened NRT or non-NRT reader

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

Michael McCandless updated LUCENE-6524:
---------------------------------------
    Attachment: LUCENE-6524.patch

Initial work-in-progress patch ... a few nocommits, but the core
idea seems to work!

This patch also includes the fixes from LUCENE-6523.

I had to add a restriction for the "open from NRT reader" case: you
can't do this if the last commit this NRT reader sees has been
deleted, e.g. if the old IndexWriter had done a commit after the NRT
reader was opened.  In this case there is no starting commit for
the new writer to fall back on, which makes things tricky ...


> Create an IndexWriter from an already opened NRT or non-NRT reader
> ------------------------------------------------------------------
>
>                 Key: LUCENE-6524
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6524
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>             Fix For: Trunk, 5.3
>
>         Attachments: LUCENE-6524.patch
>
>
> I'd like to add a new ctor to IndexWriter, letting you start from an already
> opened NRT or non-NRT DirectoryReader.  I think this is a long missing
> API in Lucene today, and we've talked in the past about different ways
> to fix it e.g. factoring out a shared reader pool between writer and reader.
> One use-case, which I hit in LUCENE-5376: if you have a read-only
> index, so you've opened a non-NRT DirectoryReader to search it, and
> then you want to "upgrade" to a read/write index, we don't handle that
> very gracefully now because you are forced to open 2X the
> SegmentReaders.
> But with this API, IW populates its reader pool with the incoming
> SegmentReaders so they are shared on any subsequent NRT reopens /
> segment merging / deletes applying, etc.
> Another (more expert) use case is allowing rollback to an NRT-point.
> Today, you can only rollback to a commit point (segments_N).  But an
> NRT reader also reflects a valid "point in time" view of the index (it
> just doesn't have a segments_N file, and its ref'd files are not
> fsync'd), so with this change you can close your old writer, open a
> new one from this NRT point, and revert all changes that had been done
> after the NRT reader was opened from the old writer.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org