Package org.elasticsearch.snapshots
Class SnapshotsService
java.lang.Object
org.elasticsearch.common.component.AbstractLifecycleComponent
org.elasticsearch.snapshots.SnapshotsService
- All Implemented Interfaces:
Closeable,AutoCloseable,ClusterStateApplier,LifecycleComponent,org.elasticsearch.core.Releasable
Service responsible for creating snapshots. This service runs all the steps executed on the master node during snapshot creation and
deletion.
See package level documentation of
org.elasticsearch.snapshots for details.-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic Versionstatic Versionstatic Versionstatic Versionstatic VersionSetting that specifies the maximum number of allowed concurrent snapshot create and delete operations in the cluster state.static Versionstatic Stringstatic VersionMinimum node version which does not useRepository.initializeSnapshot(SnapshotId, List, Metadata)to write snapshot metadata when starting a snapshot.static Versionstatic Versionstatic Stringstatic VersionFields inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
lifecycle -
Constructor Summary
ConstructorsConstructorDescriptionSnapshotsService(Settings settings, ClusterService clusterService, IndexNameExpressionResolver indexNameExpressionResolver, RepositoriesService repositoriesService, TransportService transportService, ActionFilters actionFilters, Map<String,SystemIndices.Feature> systemIndexDescriptorMap) -
Method Summary
Modifier and TypeMethodDescriptionvoidCalled when a new cluster state (ClusterChangedEvent.state()needs to be applied.booleanAssert that no in-memory state for any running snapshot-create or -delete operation exists in this instance.voidcloneSnapshot(CloneSnapshotRequest request, ActionListener<Void> listener)voidcreateSnapshot(CreateSnapshotRequest request, ActionListener<Snapshot> listener)Initializes the snapshotting process.voidcreateSnapshotLegacy(CreateSnapshotRequest request, ActionListener<Snapshot> listener)Initializes the snapshotting process.static List<SnapshotsInProgress.Entry>currentSnapshots(SnapshotsInProgress snapshotsInProgress, String repository, List<String> snapshots)Returns status of the currently running snapshotsvoiddeleteSnapshots(DeleteSnapshotRequest request, ActionListener<Void> listener)Deletes snapshots from the repository.protected voiddoClose()protected voiddoStart()protected voiddoStop()static voidensureRepositoryExists(String repoName, ClusterState state)ThrowsRepositoryMissingExceptionif no repository by the given name is found in the given cluster state.voidexecuteSnapshot(CreateSnapshotRequest request, ActionListener<SnapshotInfo> listener)Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)but invokes its callback on completion of the snapshot.voidexecuteSnapshotLegacy(CreateSnapshotRequest request, ActionListener<SnapshotInfo> listener)Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)but invokes its callback on completion of the snapshot.static booleanincludesUUIDs(Version repositoryMetaVersion)Checks whether the metadata version supports writing the cluster- and repository-uuid to the repository.minCompatibleVersion(Version minNodeVersion, RepositoryData repositoryData, 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.snapshottingDataStreams(ClusterState currentState, Set<String> dataStreamsToCheck)Returns the data streams that are currently being snapshotted (with partial == false) and that are contained in the indices-to-check set.snapshottingIndices(ClusterState currentState, 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 ClusterStateupdateWithSnapshots(ClusterState state, SnapshotsInProgress snapshotsInProgress, SnapshotDeletionsInProgress snapshotDeletionsInProgress)Shortcut to build newClusterStatefrom the current state and updated values ofSnapshotsInProgressandSnapshotDeletionsInProgress.static booleanuseIndexGenerations(Version repositoryMetaVersion)Checks whether the metadata version supports writingShardGenerationsto the repository.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. -
FULL_CONCURRENCY_VERSION
-
CLONE_SNAPSHOT_VERSION
-
SHARD_GEN_IN_REPO_DATA_VERSION
-
INDEX_GEN_IN_REPO_DATA_VERSION
-
UUIDS_IN_REPO_DATA_VERSION
-
OLD_SNAPSHOT_FORMAT
-
MULTI_DELETE_VERSION
-
FEATURE_STATES_VERSION
-
INDEX_DETAILS_INTRODUCED
-
UPDATE_SNAPSHOT_STATUS_ACTION_NAME
- See Also:
- Constant Field Values
-
NO_FEATURE_STATES_VALUE
- See Also:
- Constant Field Values
-
MAX_CONCURRENT_SNAPSHOT_OPERATIONS_SETTING
Setting that specifies the maximum number of allowed concurrent snapshot create and delete operations in the cluster state. The number of concurrent operations in a cluster state is defined as the sum of the sizes ofSnapshotsInProgress.entries()andSnapshotDeletionsInProgress.getEntries().
-
-
Constructor Details
-
SnapshotsService
public SnapshotsService(Settings settings, ClusterService clusterService, IndexNameExpressionResolver indexNameExpressionResolver, RepositoriesService repositoriesService, TransportService transportService, ActionFilters actionFilters, Map<String,SystemIndices.Feature> systemIndexDescriptorMap)
-
-
Method Details
-
executeSnapshotLegacy
public void executeSnapshotLegacy(CreateSnapshotRequest request, ActionListener<SnapshotInfo> listener)Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)but invokes its callback on completion of the snapshot. Note: This method is only used in clusters that contain a node older thanNO_REPO_INITIALIZE_VERSIONto ensure a backwards compatible path for initializing the snapshot in the repository is executed.- Parameters:
request- snapshot requestlistener- snapshot completion listener
-
createSnapshotLegacy
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. Note: This method is only used in clusters that contain a node older than
NO_REPO_INITIALIZE_VERSIONto ensure a backwards compatible path for initializing the snapshot in the repository is executed.- Parameters:
request- snapshot requestlistener- snapshot creation listener
-
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
-
cloneSnapshot
-
ensureRepositoryExists
ThrowsRepositoryMissingExceptionif no repository by the given name is found in the given cluster state. -
currentSnapshots
public static List<SnapshotsInProgress.Entry> currentSnapshots(@Nullable SnapshotsInProgress snapshotsInProgress, String repository, List<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
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, RepositoryData repositoryData, @Nullable 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 clusterrepositoryData- 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
-
useIndexGenerations
Checks whether the metadata version supports writingShardGenerationsto the repository.- Parameters:
repositoryMetaVersion- version to check- Returns:
- true if version supports
ShardGenerations
-
includesUUIDs
Checks whether the metadata version supports writing the cluster- and repository-uuid to the repository.- Parameters:
repositoryMetaVersion- version to check- Returns:
- true if version supports writing cluster- and repository-uuid to the repository
-
updateWithSnapshots
public static ClusterState updateWithSnapshots(ClusterState state, @Nullable SnapshotsInProgress snapshotsInProgress, @Nullable SnapshotDeletionsInProgress snapshotDeletionsInProgress)Shortcut to build newClusterStatefrom the current state and updated values ofSnapshotsInProgressandSnapshotDeletionsInProgress.- Parameters:
state- current cluster statesnapshotsInProgress- new value forSnapshotsInProgressornullif it's unchangedsnapshotDeletionsInProgress- new value forSnapshotDeletionsInProgressornullif it's unchanged- Returns:
- updated cluster state
-
snapshottingDataStreams
public static Set<String> snapshottingDataStreams(ClusterState currentState, Set<String> dataStreamsToCheck)Returns the data streams that are currently being snapshotted (with partial == false) and that are contained in the indices-to-check set. -
snapshottingIndices
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
-
assertAllListenersResolved
public boolean assertAllListenersResolved()Assert that no in-memory state for any running snapshot-create or -delete operation exists in this instance.
-