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]