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 2007/01/18 23:50:30 UTC

[jira] Resolved: (LUCENE-773) Deprecate "create" method in FSDirectory.getDirectory in favor of IndexWriter's "create"

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

Michael McCandless resolved LUCENE-773.
---------------------------------------

    Resolution: Fixed


OK I committed this:

  * Added removal of old write lock in IndexWriter's create (it
    already removes unreferenced files).

  * Deprecated FSDirectory.getDirectory constructors that take a
    boolean create.

  * Verified all unit tests still pass while using deprecated create.

  * Fixed all but one unit test to no longer use the now-deprecated
    constructors (I left one to make sure we do in fact continue to
    test the deprecated getDirectory constructor).  I added an "rmDir"
    utility method in a new class o/a/l/util/_TestUtil.java for those
    tests that were using getDirectory to just remove a directory.

  * Removed FSDirectory.getDirectory methods that had "create" that we
    had added with LockFactory.  These methods were never released so
    no sense newly releasing deprecated APIs.


> Deprecate "create" method in FSDirectory.getDirectory in favor of IndexWriter's "create"
> ----------------------------------------------------------------------------------------
>
>                 Key: LUCENE-773
>                 URL: https://issues.apache.org/jira/browse/LUCENE-773
>             Project: Lucene - Java
>          Issue Type: Improvement
>    Affects Versions: 1.9, 2.0.0, 2.0.1, 2.1
>            Reporter: Michael McCandless
>         Assigned To: Michael McCandless
>            Priority: Minor
>             Fix For: 2.1
>
>
> It's confusing that there is a create=true|false at the FSDirectory
> level and then also another create=true|false at the IndexWriter
> level.  Which one should you use when creating an index?
> Our users have been confused by this in the past:
>   http://www.gossamer-threads.com/lists/lucene/java-user/4792
> I think in general we should try to have one obvious way to achieve
> something (like Python: http://en.wikipedia.org/wiki/Python_philosophy).
> And the fact that there are now two code paths that are supposed to do
> the same (similar?) thing, can more easily lead to sneaky bugs.  One
> case of LUCENE-140 (already fixed in trunk but not past releases),
> which inspired this issue, can happen if you send create=false to the
> FSDirectory and create=true to the IndexWriter.
> Finally, as of lockless commits, it is now possible to open an
> existing index for "create" while readers are still using the old
> "point in time" index, on Windows.  (At least one user had tried this
> previously and failed).  To do this, we use the IndexFileDeleter class
> (which retries on failure) and we also look at the segments file to
> determine the next segments_N file to write to.
> With future issues like LUCENE-710 even more "smarts" may be required
> to know what it takes to "create" a new index into an existing
> directory.  Given that we have have quite a few Directory
> implemenations, I think these "smarts" logically should live in
> IndexWriter (not replicated in each Directory implementation), and we
> should leave the Directory as an interface that knows how to make
> changes to some backing store but does not itself try to make any
> changes.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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