[ 
https://issues.apache.org/jira/browse/LUCENE-2386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12855892#action_12855892
 ] 

Shai Erera commented on LUCENE-2386:
------------------------------------

bq. what is the proper way (after this fix) to open an IR over possibly-empty 
directory? 

You can simply call commit() immediately after you open IW. If that's what you 
need then it will work for you.

You're right that if I add docs, deletes and them commits, I'll get an empty 
segment. So is if you do "new IW()" and then "iw.close()" w/ no addDocument in 
between. The point here was that we should not create a commit unless the user 
has specifically asked for it. Calling close() means asking for a commit, per 
close semantics and contract. But if the app called new IW, add docs and 
crashed in the middle, the Directory will still remain empty ... which is sort 
of what, IMO, should happen.

I agree it's a matter of perspective. I think that when autoCommit was removed, 
so should have been this code. I don't know if it was left behind for a good 
reason, or simply because when someone tried to do it, he found out it's not 
that simple (like I have :)).

> IndexWriter commits unnecessarily on fresh Directory
> ----------------------------------------------------
>
>                 Key: LUCENE-2386
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2386
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Index
>            Reporter: Shai Erera
>            Assignee: Shai Erera
>             Fix For: 3.1
>
>         Attachments: LUCENE-2386.patch, LUCENE-2386.patch, LUCENE-2386.patch, 
> LUCENE-2386.patch, LUCENE-2386.patch
>
>
> I've noticed IndexWriter's ctor commits a first commit (empty one) if a fresh 
> Directory is passed, w/ OpenMode.CREATE or CREATE_OR_APPEND. This seems 
> unnecessarily, and kind of brings back an autoCommit mode, in a strange way 
> ... why do we need that commit? Do we really expect people to open an 
> IndexReader on an empty Directory which they just passed to an IW w/ 
> create=true? If they want, they can simply call commit() right away on the IW 
> they created.
> I ran into this when writing a test which committed N times, then compared 
> the number of commits (via IndexReader.listCommits) and was surprised to see 
> N+1 commits.
> Tried to change doCommit to false in IW ctor, but it got IndexFileDeleter 
> jumping on me .. so the change might not be that simple. But I think it's 
> manageable, so I'll try to attack it (and IFD specifically !) back :).

-- 
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-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to