Package org.elasticsearch.snapshots
Class SnapshotsService
java.lang.Object
org.elasticsearch.common.component.AbstractLifecycleComponent
org.elasticsearch.snapshots.SnapshotsService
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,ClusterStateApplier,LifecycleComponent,Releasable
public class SnapshotsService extends AbstractLifecycleComponent implements ClusterStateApplier
Service responsible for creating snapshots. See package level documentation of
org.elasticsearch.snapshots
for details.-
Field Summary
Fields Modifier and Type Field Description static VersionMULTI_DELETE_VERSIONstatic VersionNO_REPO_INITIALIZE_VERSIONMinimum node version which does not useRepository.initializeSnapshot(SnapshotId, List, Metadata)to write snapshot metadata when starting a snapshot.static VersionOLD_SNAPSHOT_FORMATstatic VersionSHARD_GEN_IN_REPO_DATA_VERSION -
Constructor Summary
Constructors Constructor Description SnapshotsService(Settings settings, ClusterService clusterService, IndexNameExpressionResolver indexNameExpressionResolver, RepositoriesService repositoriesService, ThreadPool threadPool) -
Method Summary
Modifier and Type Method Description voidapplyClusterState(ClusterChangedEvent event)Called when a new cluster state (ClusterChangedEvent.state()needs to be applied.voidcreateSnapshot(CreateSnapshotRequest request, ActionListener<Snapshot> listener)Initializes the snapshotting process.static java.util.List<SnapshotsInProgress.Entry>currentSnapshots(SnapshotsInProgress snapshotsInProgress, java.lang.String repository, java.util.List<java.lang.String> snapshots)Returns status of the currently running snapshotsvoiddeleteSnapshots(DeleteSnapshotRequest request, ActionListener<java.lang.Void> listener)Deletes snapshots from the repository.protected voiddoClose()protected voiddoStart()protected voiddoStop()voidexecuteSnapshot(CreateSnapshotRequest request, ActionListener<SnapshotInfo> listener)Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)but invokes its callback on completion of the snapshot.VersionminCompatibleVersion(Version minNodeVersion, java.lang.String repositoryName, RepositoryData repositoryData, java.util.Collection<SnapshotId> excluded)Determines the minimumVersionthat the snapshot repository must be compatible with from the current nodes in the cluster and the contents of the repository.static java.util.Set<Index>snapshottingIndices(ClusterState currentState, java.util.Set<Index> indicesToCheck)Returns the indices that are currently being snapshotted (with partial == false) and that are contained in the indices-to-check set.static booleanuseShardGenerations(Version repositoryMetaVersion)Checks whether the metadata version supports writingShardGenerationsto the repository.Methods inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
addLifecycleListener, close, lifecycleState, removeLifecycleListener, start, stop
-
Field Details
-
NO_REPO_INITIALIZE_VERSION
Minimum node version which does not useRepository.initializeSnapshot(SnapshotId, List, Metadata)to write snapshot metadata when starting a snapshot. -
SHARD_GEN_IN_REPO_DATA_VERSION
-
OLD_SNAPSHOT_FORMAT
-
MULTI_DELETE_VERSION
-
-
Constructor Details
-
SnapshotsService
public SnapshotsService(Settings settings, ClusterService clusterService, IndexNameExpressionResolver indexNameExpressionResolver, RepositoriesService repositoriesService, ThreadPool threadPool)
-
-
Method Details
-
executeSnapshot
Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)but invokes its callback on completion of the snapshot.- Parameters:
request- snapshot requestlistener- snapshot completion listener
-
createSnapshot
Initializes the snapshotting process.This method is used by clients to start snapshot. It makes sure that there is no snapshots are currently running and creates a snapshot record in cluster state metadata.
- Parameters:
request- snapshot requestlistener- snapshot creation listener
-
currentSnapshots
public static java.util.List<SnapshotsInProgress.Entry> currentSnapshots(@Nullable SnapshotsInProgress snapshotsInProgress, java.lang.String repository, java.util.List<java.lang.String> snapshots)Returns status of the currently running snapshotsThis method is executed on master node
- Parameters:
snapshotsInProgress- snapshots in progress in the cluster staterepository- repository idsnapshots- list of snapshots that will be used as a filter, empty list means no snapshots are filtered- Returns:
- list of metadata for currently running snapshots
-
applyClusterState
Description copied from interface:ClusterStateApplierCalled when a new cluster state (ClusterChangedEvent.state()needs to be applied. The cluster state to be applied is already committed when this method is called, so an applier must therefore be prepared to deal with any state it receives without throwing an exception. Throwing an exception from an applier is very bad because it will stop the application of this state before it has reached all the other appliers, and will likely result in another attempt to apply the same (or very similar) cluster state which might continue until this node is removed from the cluster.- Specified by:
applyClusterStatein interfaceClusterStateApplier
-
deleteSnapshots
public void deleteSnapshots(DeleteSnapshotRequest request, ActionListener<java.lang.Void> listener)Deletes snapshots from the repository. In-progress snapshots matched by the delete will be aborted before deleting them.- Parameters:
request- delete snapshot requestlistener- listener
-
minCompatibleVersion
public Version minCompatibleVersion(Version minNodeVersion, java.lang.String repositoryName, RepositoryData repositoryData, @Nullable java.util.Collection<SnapshotId> excluded)Determines the minimumVersionthat the snapshot repository must be compatible with from the current nodes in the cluster and the contents of the repository. The minimum version is determined as the lowest version found across all snapshots in the repository and all nodes in the cluster.- Parameters:
minNodeVersion- minimum node version in the clusterrepositoryName- name of the repository to modifyrepositoryData- currentRepositoryDataof that repositoryexcluded- snapshot id to ignore when computing the minimum version (used to use newer metadata version after a snapshot delete)- Returns:
- minimum node version that must still be able to read the repository metadata
-
useShardGenerations
Checks whether the metadata version supports writingShardGenerationsto the repository.- Parameters:
repositoryMetaVersion- version to check- Returns:
- true if version supports
ShardGenerations
-
snapshottingIndices
public static java.util.Set<Index> snapshottingIndices(ClusterState currentState, java.util.Set<Index> indicesToCheck)Returns the indices that are currently being snapshotted (with partial == false) and that are contained in the indices-to-check set. -
doStart
protected void doStart()- Specified by:
doStartin classAbstractLifecycleComponent
-
doStop
protected void doStop()- Specified by:
doStopin classAbstractLifecycleComponent
-
doClose
protected void doClose()- Specified by:
doClosein classAbstractLifecycleComponent
-