Package org.apache.lucene.index
Class PersistentSnapshotDeletionPolicy
java.lang.Object
org.apache.lucene.index.IndexDeletionPolicy
org.apache.lucene.index.SnapshotDeletionPolicy
org.apache.lucene.index.PersistentSnapshotDeletionPolicy
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
Fields inherited from class org.apache.lucene.index.SnapshotDeletionPolicy
indexCommits, lastCommit, refCounts
-
Constructor Summary
ConstructorDescriptionPersistentSnapshotDeletionPolicy
(IndexDeletionPolicy primary, Directory dir) PersistentSnapshotDeletionPolicy
wraps anotherIndexDeletionPolicy
to enable flexible snapshotting, passingIndexWriterConfig.OpenMode.CREATE_OR_APPEND
by default.PersistentSnapshotDeletionPolicy
(IndexDeletionPolicy primary, Directory dir, IndexWriterConfig.OpenMode mode) PersistentSnapshotDeletionPolicy
wraps anotherIndexDeletionPolicy
to enable flexible snapshotting. -
Method Summary
Modifier and TypeMethodDescriptionReturns the file name the snapshots are currently saved to, or null if no snapshots have been saved.void
release
(long gen) Deletes a snapshotted commit by generation.void
release
(IndexCommit commit) Deletes a snapshotted commit.snapshot()
Snapshots the last commit.Methods inherited from class org.apache.lucene.index.SnapshotDeletionPolicy
getIndexCommit, getSnapshotCount, getSnapshots, incRef, onCommit, onInit, releaseGen
-
Field Details
-
SNAPSHOTS_PREFIX
Prefix used for the save file.- See Also:
-
-
Constructor Details
-
PersistentSnapshotDeletionPolicy
public PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary, Directory dir) throws IOException PersistentSnapshotDeletionPolicy
wraps anotherIndexDeletionPolicy
to enable flexible snapshotting, passingIndexWriterConfig.OpenMode.CREATE_OR_APPEND
by default.- Parameters:
primary
- theIndexDeletionPolicy
that is used on non-snapshotted commits. Snapshotted commits, by definition, are not deleted until explicitly released viarelease(org.apache.lucene.index.IndexCommit)
.dir
- theDirectory
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 anotherIndexDeletionPolicy
to enable flexible snapshotting.- Parameters:
primary
- theIndexDeletionPolicy
that is used on non-snapshotted commits. Snapshotted commits, by definition, are not deleted until explicitly released viarelease(org.apache.lucene.index.IndexCommit)
.dir
- theDirectory
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 Details
-
snapshot
Snapshots the last commit. Once this method returns, the snapshot information is persisted in the directory.- Overrides:
snapshot
in classSnapshotDeletionPolicy
- Returns:
- the
IndexCommit
that was snapshotted. - Throws:
IOException
- See Also:
-
release
Deletes a snapshotted commit. Once this method returns, the snapshot information is persisted in the directory.- Overrides:
release
in classSnapshotDeletionPolicy
- Parameters:
commit
- the commit previously returned bySnapshotDeletionPolicy.snapshot()
- Throws:
IOException
- See Also:
-
release
Deletes a snapshotted commit by generation. Once this method returns, the snapshot information is persisted in the directory. -
getLastSaveFile
Returns the file name the snapshots are currently saved to, or null if no snapshots have been saved.
-