Good questions! Yes, it's best to use the segments filename to compare commit points across close/reopen of IndexWriter as long as you ensure you're always working with the same index / Directory.
You could change snapshot to be a String (the segments file name) and do all comparisons on that basis instead of holding the IndexCommitPoint. This breaks the reference to the non-static inner class CommitPoint in IndexFileDeleter. I like this simplification ... I've opened LUCENE-1184 for this and attached a patch: https://issues.apache.org/jira/browse/LUCENE-1184 Thanks Tim! Mike Tim Brennan <[EMAIL PROTECTED]> wrote: > When implementing a custom IndexDeletionPolicy, is it sufficient to just use > the segments filename (returned by IndexCommitPoint.getSegmentsFilename()) to > compare CommitPoints to see if they are equal? > > I've looked at the code in SnapshotDeletionPolicy and it works by keeping a > pointer to the snapshot IndexCommitPoint and comparing that against the > listed commit points in onCommit. This strategy doesn't seem to work if the > IndexWriter is closed and re-opened: you get all new CommitPoint instances > from the new Writer even if they refer to the same logical commit, and > furthermore holding onto IndexCommitPoint references across generations of > IndexWriters will cause significant memory pressure (an IndexCommitPoint is > an instance of the *non-static* inner class IndexFileDeleter$CommitPoint so > it points to the IndexFileDeleter which points to the DocumentsWriter which > points to the Posting[] array.....so holding onto a commit point effectively > keeps the Posting[] array around) > > Am I going completely wrong here, trying to IndexDeletionPolicy across > Writer generations? > > --tim > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]