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
- All Implemented Interfaces:
Cloneable
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()
.
-
Field Summary
FieldsFields inherited from class org.apache.lucene.index.SnapshotDeletionPolicy
indexCommits, lastCommit, refCounts
-
Constructor Summary
ConstructorsConstructorDescriptionPersistentSnapshotDeletionPolicy
(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
clone, 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.
-