java.lang.AutoCloseable
, java.io.Closeable
, LifecycleComponent
, Releasable
BlobStoreRepository
, FsRepository
public interface Repository extends LifecycleComponent
Implementations are responsible for reading and writing both metadata and shard data to and from a repository backend.
To perform a snapshot:
initializeSnapshot(SnapshotId, List, org.elasticsearch.cluster.metadata.MetaData)
with list of indices that will be included into the snapshotsnapshotShard(IndexShard, SnapshotId, IndexId, IndexCommit, IndexShardSnapshotStatus)
for each shardfinalizeSnapshot(org.elasticsearch.snapshots.SnapshotId, java.util.List<org.elasticsearch.repositories.IndexId>, long, java.lang.String, int, java.util.List<org.elasticsearch.snapshots.SnapshotShardFailure>, long, boolean)
with possible list of failuresModifier and Type | Interface | Description |
---|---|---|
static interface |
Repository.Factory |
An factory interface for constructing repositories.
|
Modifier and Type | Method | Description |
---|---|---|
void |
deleteSnapshot(SnapshotId snapshotId,
long repositoryStateId) |
Deletes snapshot
|
void |
endVerification(java.lang.String verificationToken) |
Called at the end of repository verification process.
|
SnapshotInfo |
finalizeSnapshot(SnapshotId snapshotId,
java.util.List<IndexId> indices,
long startTime,
java.lang.String failure,
int totalShards,
java.util.List<SnapshotShardFailure> shardFailures,
long repositoryStateId,
boolean includeGlobalState) |
Finalizes snapshotting process
|
RepositoryMetaData |
getMetadata() |
Returns metadata about this repository.
|
RepositoryData |
getRepositoryData() |
Returns a
RepositoryData to describe the data in the repository, including the snapshots
and the indices across all snapshots found in the repository. |
long |
getRestoreThrottleTimeInNanos() |
Returns restore throttle time in nanoseconds
|
IndexShardSnapshotStatus |
getShardSnapshotStatus(SnapshotId snapshotId,
Version version,
IndexId indexId,
ShardId shardId) |
Retrieve shard snapshot status for the stored snapshot
|
SnapshotInfo |
getSnapshotInfo(SnapshotId snapshotId) |
Reads snapshot description from repository.
|
MetaData |
getSnapshotMetaData(SnapshotInfo snapshot,
java.util.List<IndexId> indices) |
Returns global metadata associate with the snapshot.
|
long |
getSnapshotThrottleTimeInNanos() |
Returns snapshot throttle time in nanoseconds
|
void |
initializeSnapshot(SnapshotId snapshotId,
java.util.List<IndexId> indices,
MetaData metaData) |
Starts snapshotting process
|
boolean |
isReadOnly() |
Returns true if the repository supports only read operations
|
void |
restoreShard(IndexShard shard,
SnapshotId snapshotId,
Version version,
IndexId indexId,
ShardId snapshotShardId,
RecoveryState recoveryState) |
Restores snapshot of the shard.
|
void |
snapshotShard(IndexShard shard,
SnapshotId snapshotId,
IndexId indexId,
org.apache.lucene.index.IndexCommit snapshotIndexCommit,
IndexShardSnapshotStatus snapshotStatus) |
Creates a snapshot of the shard based on the index commit point.
|
java.lang.String |
startVerification() |
Verifies repository on the master node and returns the verification token.
|
void |
verify(java.lang.String verificationToken,
DiscoveryNode localNode) |
Verifies repository settings on data node.
|
addLifecycleListener, lifecycleState, removeLifecycleListener, start, stop
close
RepositoryMetaData getMetadata()
SnapshotInfo getSnapshotInfo(SnapshotId snapshotId)
snapshotId
- snapshot idMetaData getSnapshotMetaData(SnapshotInfo snapshot, java.util.List<IndexId> indices) throws java.io.IOException
The returned meta data contains global metadata as well as metadata for all indices listed in the indices parameter.
snapshot
- snapshotindices
- list of indicesjava.io.IOException
RepositoryData getRepositoryData()
RepositoryData
to describe the data in the repository, including the snapshots
and the indices across all snapshots found in the repository. Throws a RepositoryException
if there was an error in reading the data.void initializeSnapshot(SnapshotId snapshotId, java.util.List<IndexId> indices, MetaData metaData)
snapshotId
- snapshot idindices
- list of indices to be snapshottedmetaData
- cluster metadataSnapshotInfo finalizeSnapshot(SnapshotId snapshotId, java.util.List<IndexId> indices, long startTime, java.lang.String failure, int totalShards, java.util.List<SnapshotShardFailure> shardFailures, long repositoryStateId, boolean includeGlobalState)
This method is called on master after all shards are snapshotted.
snapshotId
- snapshot idindices
- list of indices in the snapshotstartTime
- start time of the snapshotfailure
- global failure reason or nulltotalShards
- total number of shardsshardFailures
- list of shard failuresrepositoryStateId
- the unique id identifying the state of the repository when the snapshot beganincludeGlobalState
- include cluster global statevoid deleteSnapshot(SnapshotId snapshotId, long repositoryStateId)
snapshotId
- snapshot idrepositoryStateId
- the unique id identifying the state of the repository when the snapshot deletion beganlong getSnapshotThrottleTimeInNanos()
long getRestoreThrottleTimeInNanos()
java.lang.String startVerification()
If the verification token is not null, it's passed to all data nodes for verification. If it's null - no additional verification is required
void endVerification(java.lang.String verificationToken)
This method should perform all necessary cleanup of the temporary files created in the repository
verificationToken
- verification request generated by startVerification()
commandvoid verify(java.lang.String verificationToken, DiscoveryNode localNode)
verificationToken
- value returned by startVerification()
localNode
- the local node information, for inclusion in verification errorsboolean isReadOnly()
void snapshotShard(IndexShard shard, SnapshotId snapshotId, IndexId indexId, org.apache.lucene.index.IndexCommit snapshotIndexCommit, IndexShardSnapshotStatus snapshotStatus)
The index commit point can be obtained by using Engine.acquireIndexCommit(boolean, boolean)
method.
Repository implementations shouldn't release the snapshot index commit point. It is done by the method caller.
As snapshot process progresses, implementation of this method should update IndexShardSnapshotStatus
object and check
IndexShardSnapshotStatus.isAborted()
to see if the snapshot process should be aborted.
shard
- shard to be snapshottedsnapshotId
- snapshot idindexId
- id for the index being snapshottedsnapshotIndexCommit
- commit pointsnapshotStatus
- snapshot statusvoid restoreShard(IndexShard shard, SnapshotId snapshotId, Version version, IndexId indexId, ShardId snapshotShardId, RecoveryState recoveryState)
The index can be renamed on restore, hence different shardId
and snapshotShardId
are supplied.
shard
- the shard to restore the index intosnapshotId
- snapshot idversion
- version of elasticsearch that created this snapshotindexId
- id of the index in the repository from which the restore is occurringsnapshotShardId
- shard id (in the snapshot)recoveryState
- recovery stateIndexShardSnapshotStatus getShardSnapshotStatus(SnapshotId snapshotId, Version version, IndexId indexId, ShardId shardId)
snapshotId
- snapshot idversion
- version of elasticsearch that created this snapshotindexId
- the snapshotted index id for the shard to get status forshardId
- shard id