## org.apache.lucene.index
Class PersistentSnapshotDeletionPolicy

    java.lang.Object
      org.apache.lucene.index.IndexDeletionPolicy
          org.apache.lucene.index.SnapshotDeletionPolicy
              org.apache.lucene.index.PersistentSnapshotDeletionPolicy

All Implemented Interfaces:
  Cloneable

    public class PersistentSnapshotDeletionPolicy

extends SnapshotDeletionPolicy

A `SnapshotDeletionPolicy` which adds a persistence layer so that snapshots can be maintained across the life of an application. The snapshots are persisted in a `Directory` and are committed as soon as `snapshot()` or `release(IndexCommit)` is called.

NOTE: Sharing `PersistentSnapshotDeletionPolicy`s that write to the same directory across `IndexWriter`s will corrupt snapshots. You should make sure every `IndexWriter` has its own `PersistentSnapshotDeletionPolicy` and that they all write to a different `Directory`. It is OK to use the same Directory that holds the index.

This class adds a `release(long)` method to release commits from a previous snapshot's `IndexCommit.getGeneration()`.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Field Summary
`static String` `SNAPSHOTS_PREFIX` Prefix used for the save file.

Fields inherited from class org.apache.lucene.index.SnapshotDeletionPolicy
`indexCommits, lastCommit, refCounts`

Constructor Summary
`PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary, Directory dir)` `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting, passing `IndexWriterConfig.OpenMode.CREATE_OR_APPEND` by default.
`PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary, Directory dir, IndexWriterConfig.OpenMode mode)` `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting.

Method Summary
`String` `getLastSaveFile()` Returns the file name the snapshots are currently saved to, or null if no snapshots have been saved.
`void` `release(IndexCommit commit)` Deletes a snapshotted commit.
`void` `release(long gen)` Deletes a snapshotted commit by generation.
`IndexCommit` `snapshot()` Snapshots the last commit.

Methods inherited from class org.apache.lucene.index.SnapshotDeletionPolicy
`clone, getIndexCommit, getSnapshotCount, getSnapshots, incRef, onCommit, onInit, releaseGen`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### SNAPSHOTS_PREFIX

    public static final String SNAPSHOTS_PREFIX

  Prefix used for the save file.

  See Also:
    Constant Field Values

Constructor Detail

### PersistentSnapshotDeletionPolicy

    public PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary,
                                            Directory dir)
                                     throws IOException

  `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting, passing `IndexWriterConfig.OpenMode.CREATE_OR_APPEND` by default.

  Parameters:
    `primary` - the `IndexDeletionPolicy` that is used on non-snapshotted commits. Snapshotted commits, by definition, are not deleted until explicitly released via `release(org.apache.lucene.index.IndexCommit)`.
    `dir` - the `Directory` which will be used to persist the snapshots information.
  Throws:
    `IOException`

### PersistentSnapshotDeletionPolicy

    public PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary,
                                            Directory dir,
                                            IndexWriterConfig.OpenMode mode)
                                     throws IOException

  `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting.

  Parameters:
    `primary` - the `IndexDeletionPolicy` that is used on non-snapshotted commits. Snapshotted commits, by definition, are not deleted until explicitly released via `release(org.apache.lucene.index.IndexCommit)`.
    `dir` - the `Directory` which will be used to persist the snapshots information.
    `mode` - specifies whether a new index should be created, deleting all existing snapshots information (immediately), or open an existing index, initializing the class with the snapshots information.
  Throws:
    `IOException`

Method Detail

### snapshot

    public IndexCommit snapshot()
                         throws IOException

  Snapshots the last commit. Once this method returns, the snapshot information is persisted in the directory.

  Overrides:
    `snapshot` in class `SnapshotDeletionPolicy`
  Returns:
    the `IndexCommit` that was snapshotted.
  Throws:
    `IOException`
  See Also:
    `SnapshotDeletionPolicy.snapshot()`

### release

    public void release(IndexCommit commit)
                 throws IOException

  Deletes a snapshotted commit. Once this method returns, the snapshot information is persisted in the directory.

  Overrides:
    `release` in class `SnapshotDeletionPolicy`
  Parameters:
    `commit` - the commit previously returned by `SnapshotDeletionPolicy.snapshot()`
  Throws:
    `IOException`
  See Also:
    `SnapshotDeletionPolicy.release(org.apache.lucene.index.IndexCommit)`

### release

    public void release(long gen)
                 throws IOException

  Deletes a snapshotted commit by generation. Once this method returns, the snapshot information is persisted in the directory.

  Throws:
    `IOException`
  See Also:
    `IndexCommit.getGeneration()`, `SnapshotDeletionPolicy.release(org.apache.lucene.index.IndexCommit)`

### getLastSaveFile

    public String getLastSaveFile()

  Returns the file name the snapshots are currently saved to, or null if no snapshots have been saved.

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.