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
Modifier and TypeFieldDescriptionstatic Version
static Version
static Version
static Version
static Version
Setting that specifies the maximum number of allowed concurrent snapshot create and delete operations in the cluster state.static Version
static String
static Version
Minimum node version which does not useRepository.initializeSnapshot(SnapshotId, List, Metadata)
to write snapshot metadata when starting a snapshot.static Version
static Version
static String
static Version
Fields inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
lifecycle
-
Constructor Summary
ConstructorDescriptionSnapshotsService(Settings settings, ClusterService clusterService, IndexNameExpressionResolver indexNameExpressionResolver, RepositoriesService repositoriesService, TransportService transportService, ActionFilters actionFilters, Map<String,SystemIndices.Feature> systemIndexDescriptorMap)
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Called when a new cluster state (ClusterChangedEvent.state()
needs to be applied.boolean
Assert that no in-memory state for any running snapshot-create or -delete operation exists in this instance.void
cloneSnapshot(CloneSnapshotRequest request, ActionListener<Void> listener)
void
createSnapshot(CreateSnapshotRequest request, ActionListener<Snapshot> listener)
Initializes the snapshotting process.void
createSnapshotLegacy(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 snapshotsvoid
deleteSnapshots(DeleteSnapshotRequest request, ActionListener<Void> listener)
Deletes snapshots from the repository.protected void
doClose()
protected void
doStart()
protected void
doStop()
static void
ensureRepositoryExists(String repoName, ClusterState state)
ThrowsRepositoryMissingException
if no repository by the given name is found in the given cluster state.void
executeSnapshot(CreateSnapshotRequest request, ActionListener<SnapshotInfo> listener)
Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)
but invokes its callback on completion of the snapshot.void
executeSnapshotLegacy(CreateSnapshotRequest request, ActionListener<SnapshotInfo> listener)
Same ascreateSnapshot(CreateSnapshotRequest, ActionListener)
but invokes its callback on completion of the snapshot.static boolean
includesUUIDs(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 minimumVersion
that 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 ClusterState
updateWithSnapshots(ClusterState state, SnapshotsInProgress snapshotsInProgress, SnapshotDeletionsInProgress snapshotDeletionsInProgress)
Shortcut to build newClusterState
from the current state and updated values ofSnapshotsInProgress
andSnapshotDeletionsInProgress
.static boolean
useIndexGenerations(Version repositoryMetaVersion)
Checks whether the metadata version supports writingShardGenerations
to the repository.static boolean
useShardGenerations(Version repositoryMetaVersion)
Checks whether the metadata version supports writingShardGenerations
to 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_VERSION
to 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_VERSION
to 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
ThrowsRepositoryMissingException
if 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:ClusterStateApplier
Called 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:
applyClusterState
in 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 minimumVersion
that 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
- currentRepositoryData
of 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 writingShardGenerations
to the repository.- Parameters:
repositoryMetaVersion
- version to check- Returns:
- true if version supports
ShardGenerations
-
useIndexGenerations
Checks whether the metadata version supports writingShardGenerations
to 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 newClusterState
from the current state and updated values ofSnapshotsInProgress
andSnapshotDeletionsInProgress
.- Parameters:
state
- current cluster statesnapshotsInProgress
- new value forSnapshotsInProgress
ornull
if it's unchangedsnapshotDeletionsInProgress
- new value forSnapshotDeletionsInProgress
ornull
if 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:
doStart
in classAbstractLifecycleComponent
-
doStop
protected void doStop()- Specified by:
doStop
in classAbstractLifecycleComponent
-
doClose
protected void doClose()- Specified by:
doClose
in classAbstractLifecycleComponent
-
assertAllListenersResolved
public boolean assertAllListenersResolved()Assert that no in-memory state for any running snapshot-create or -delete operation exists in this instance.
-