[ 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