Class IndexDeletionPolicyWrapper


  • public final class IndexDeletionPolicyWrapper
    extends org.apache.lucene.index.IndexDeletionPolicy
    A wrapper for an IndexDeletionPolicy instance.

    Provides features for looking up IndexCommit given a version. Allows reserving index commit points for certain amounts of time to support features such as index replication or snapshooting directly out of a live index directory.

    NOTE: The Object.clone() method returns this in order to make this IndexDeletionPolicy instance trackable across IndexWriter instantiations. This is correct because each core has its own IndexDeletionPolicy and never has more than one open IndexWriter.

    See Also:
    IndexDeletionPolicy
    • Constructor Detail

      • IndexDeletionPolicyWrapper

        public IndexDeletionPolicyWrapper​(org.apache.lucene.index.IndexDeletionPolicy deletionPolicy,
                                          SolrSnapshotMetaDataManager snapshotMgr)
    • Method Detail

      • getLatestCommit

        public org.apache.lucene.index.IndexCommit getLatestCommit()
        Gets the most recent commit point

        It is recommended to reserve a commit point for the duration of usage so that it is not deleted by the underlying deletion policy

        Returns:
        the most recent commit point
      • getWrappedDeletionPolicy

        public org.apache.lucene.index.IndexDeletionPolicy getWrappedDeletionPolicy()
      • setReserveDuration

        public void setReserveDuration​(Long indexGen,
                                       long reserveTime)
        Set the duration for which commit point is to be reserved by the deletion policy.
        Parameters:
        indexGen - gen of the commit point to be reserved
        reserveTime - time in milliseconds for which the commit point is to be reserved
      • saveCommitPoint

        public void saveCommitPoint​(Long indexCommitGen)
        Permanently prevent this commit point from being deleted. A counter is used to allow a commit point to be correctly saved and released multiple times.
      • releaseCommitPoint

        public void releaseCommitPoint​(Long indexCommitGen)
        Release a previously saved commit point
      • onInit

        public void onInit​(List<? extends org.apache.lucene.index.IndexCommit> list)
                    throws IOException
        Internal use for Lucene... do not explicitly call.
        Specified by:
        onInit in class org.apache.lucene.index.IndexDeletionPolicy
        Throws:
        IOException
      • onCommit

        public void onCommit​(List<? extends org.apache.lucene.index.IndexCommit> list)
                      throws IOException
        Internal use for Lucene... do not explicitly call.
        Specified by:
        onCommit in class org.apache.lucene.index.IndexDeletionPolicy
        Throws:
        IOException
      • getCommitPoint

        public org.apache.lucene.index.IndexCommit getCommitPoint​(Long gen)
        Parameters:
        gen - the gen of the commit point
        Returns:
        a commit point corresponding to the given version
      • getCommits

        public Map<Long,​org.apache.lucene.index.IndexCommit> getCommits()
        Gets the commit points for the index. This map instance may change between commits and commit points may be deleted. It is recommended to reserve a commit point for the duration of usage
        Returns:
        a Map of version to commit points
      • getCommitTimestamp

        public static long getCommitTimestamp​(org.apache.lucene.index.IndexCommit commit)
                                       throws IOException
        Throws:
        IOException