[ https://issues.apache.org/jira/browse/LUCENE-2402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shai Erera resolved LUCENE-2402. -------------------------------- Resolution: Fixed Committed revision 941417. > Add an explicit method to invoke IndexDeletionPolicy > ---------------------------------------------------- > > Key: LUCENE-2402 > URL: https://issues.apache.org/jira/browse/LUCENE-2402 > Project: Lucene - Java > Issue Type: Improvement > Components: Index > Reporter: Shai Erera > Assignee: Shai Erera > Fix For: 3.1, 4.0 > > Attachments: LUCENE-2402.patch, LUCENE-2402.patch > > > Today, if one uses an IDP which holds onto segments, such as > SnapshotDeletionPolicy, or any other IDP in the tests, those segments are > left in the index even if the IDP no longer references them, until > IW.commit() is called (and actually does something). I'd like to add a > specific method to IW which will invoke the IDP's logic and get rid of the > unused segments w/o forcing the user to call IW.commit(). There are a couple > of reasons for that: > * Segments take up sometimes valuable HD space, and the application may wish > to reclaim that space immediately. In some scenarios, the index is updated > once in several hours (or even days), and waiting until then may not be > acceptable. > * I think it's a cleaner solution than waiting for the next commit() to > happen. One can still wait for it if one wants, but otherwise it will give > you the ability to immediately get rid of those segments. > * TestSnapshotDeletionPolicy includes this code, which only strengthens (IMO) > the need for such method: > {code} > // Add one more document to force writer to commit a > // final segment, so deletion policy has a chance to > // delete again: > Document doc = new Document(); > doc.add(new Field("content", "aaa", Field.Store.YES, Field.Index.ANALYZED, > Field.TermVector.WITH_POSITIONS_OFFSETS)); > writer.addDocument(doc); > {code} > If IW had an explicit method, that code would not need to exist there at all > ... > Here comes the fun part - naming the baby: > * invokeDeletionPolicy -- describes exactly what is going to happen. However, > if the user did not set IDP at all (relying on default, which I think many > do), users won't understand what is it. > * deleteUnusedSegments - more user-friendly, assuming users understand what > 'segments' are. > BTW, IW already has deleteUnusedFiles() which only tries to delete > unreferenced files that failed to delete before (such as on Windows, due to > e.g. open readers). Perhaps instead of inventing a new name, we can change > IW.deleteUnusedFiles to call IndexFileDeleter.checkpoint (instead of > deletePendingFiles) which deletes those files + calls IDP.onCommit(). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org