Package org.elasticsearch.repositories
Class RepositoryData
java.lang.Object
org.elasticsearch.repositories.RepositoryData
public final class RepositoryData
extends java.lang.Object
A class that represents the data in a repository, as captured in the
repository's index blob.
-
Field Summary
Fields Modifier and Type Field Description static long
CORRUPTED_REPO_GEN
The generation value indicating that the repository generation could not be determined.static RepositoryData
EMPTY
An instance initialized for an empty repository.static long
EMPTY_REPO_GEN
The generation value indicating the repository has no index generational files.static java.lang.String
MISSING_UUID
Sentinel value for the repository UUID indicating that it is not set.static long
UNKNOWN_REPO_GEN
The generation value indicating that the repository generation is unknown. -
Constructor Summary
Constructors Constructor Description RepositoryData(java.lang.String uuid, long genId, java.util.Map<java.lang.String,SnapshotId> snapshotIds, java.util.Map<java.lang.String,SnapshotState> snapshotStates, java.util.Map<java.lang.String,Version> snapshotVersions, java.util.Map<IndexId,java.util.List<SnapshotId>> indexSnapshots, ShardGenerations shardGenerations, IndexMetaDataGenerations indexMetaDataGenerations, java.lang.String clusterUUID)
-
Method Summary
Modifier and Type Method Description RepositoryData
addSnapshot(SnapshotId snapshotId, SnapshotState snapshotState, Version version, ShardGenerations shardGenerations, java.util.Map<IndexId,java.lang.String> indexMetaBlobs, java.util.Map<java.lang.String,java.lang.String> newIdentifiers)
Add a snapshot and its indices to the repository; returns a new instance.protected RepositoryData
copy()
boolean
equals(java.lang.Object obj)
java.lang.String
getClusterUUID()
long
getGenId()
Gets the generational index file id from which this instance was read.java.util.Map<java.lang.String,IndexId>
getIndices()
Returns an unmodifiable map of the index names toIndexId
in the repository.java.util.Collection<SnapshotId>
getSnapshotIds()
Returns an unmodifiable collection of the snapshot ids.java.util.List<SnapshotId>
getSnapshots(IndexId indexId)
Returns an immutable collection of the snapshot ids for the snapshots that contain the given index.SnapshotState
getSnapshotState(SnapshotId snapshotId)
Returns theSnapshotState
for the given snapshot.java.lang.String
getUuid()
Version
getVersion(SnapshotId snapshotId)
Returns theVersion
for the given snapshot ornull
if unknown.int
hashCode()
IndexMetaDataGenerations
indexMetaDataGenerations()
java.util.Map<IndexId,java.util.Collection<java.lang.String>>
indexMetaDataToRemoveAfterRemovingSnapshots(java.util.Collection<SnapshotId> snapshotIds)
Returns a map ofIndexId
to a collection ofString
containing all theIndexId
and theIndexMetadata
blob name in it that can be removed after removing the given snapshot from the repository.java.util.List<IndexId>
indicesToUpdateAfterRemovingSnapshot(java.util.Collection<SnapshotId> snapshotIds)
Returns the list ofIndexId
that have their snapshots updated but not removed (because they are still referenced by other snapshots) after removing the given snapshot from the repository.RepositoryData
removeSnapshots(java.util.Collection<SnapshotId> snapshots, ShardGenerations updatedShardGenerations)
Remove snapshots and remove any indices that no longer exist in the repository due to the deletion of the snapshots.IndexId
resolveIndexId(java.lang.String indexName)
Resolve the index name to the index id specific to the repository, throwing an exception if the index could not be resolved.java.util.List<IndexId>
resolveIndices(java.util.List<java.lang.String> indices)
Resolve the given index names to index ids.java.util.List<IndexId>
resolveNewIndices(java.util.List<java.lang.String> indicesToResolve, java.util.Map<java.lang.String,IndexId> inFlightIds)
Resolve the given index names to index ids, creating new index ids for new indices in the repository.ShardGenerations
shardGenerations()
static RepositoryData
snapshotsFromXContent(org.elasticsearch.common.xcontent.XContentParser parser, long genId, boolean fixBrokenShardGens)
Reads an instance ofRepositoryData
from x-content, loading the snapshots and indices metadata.org.elasticsearch.common.xcontent.XContentBuilder
snapshotsToXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, Version repoMetaVersion)
Writes the snapshots metadata and the related indices metadata to x-content.org.elasticsearch.common.xcontent.XContentBuilder
snapshotsToXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, Version repoMetaVersion, boolean permitMissingUuid)
Writes the snapshots metadata and the related indices metadata to x-content.RepositoryData
withClusterUuid(java.lang.String clusterUUID)
RepositoryData
withGenId(long newGeneration)
Create a new instance with the given generation and all other fields equal to this instance.RepositoryData
withoutUUIDs()
For test purposes, make a copy of this instance with the cluster- and repository UUIDs removed and all other fields unchanged, as if from an older version.RepositoryData
withVersions(java.util.Map<SnapshotId,Version> versions)
Creates a copy of this instance that contains updated version data.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
EMPTY_REPO_GEN
public static final long EMPTY_REPO_GENThe generation value indicating the repository has no index generational files.- See Also:
- Constant Field Values
-
UNKNOWN_REPO_GEN
public static final long UNKNOWN_REPO_GENThe generation value indicating that the repository generation is unknown.- See Also:
- Constant Field Values
-
CORRUPTED_REPO_GEN
public static final long CORRUPTED_REPO_GENThe generation value indicating that the repository generation could not be determined.- See Also:
- Constant Field Values
-
MISSING_UUID
public static final java.lang.String MISSING_UUIDSentinel value for the repository UUID indicating that it is not set.- See Also:
- Constant Field Values
-
EMPTY
An instance initialized for an empty repository.
-
-
Constructor Details
-
RepositoryData
public RepositoryData(java.lang.String uuid, long genId, java.util.Map<java.lang.String,SnapshotId> snapshotIds, java.util.Map<java.lang.String,SnapshotState> snapshotStates, java.util.Map<java.lang.String,Version> snapshotVersions, java.util.Map<IndexId,java.util.List<SnapshotId>> indexSnapshots, ShardGenerations shardGenerations, IndexMetaDataGenerations indexMetaDataGenerations, java.lang.String clusterUUID)
-
-
Method Details
-
copy
-
withVersions
Creates a copy of this instance that contains updated version data.- Parameters:
versions
- map of snapshot versions- Returns:
- copy with updated version data
-
shardGenerations
-
getUuid
public java.lang.String getUuid()- Returns:
- The UUID of this repository, or
MISSING_UUID
if this repository has no UUID because it still supports access from versions earlier thanSnapshotsService.UUIDS_IN_REPO_DATA_VERSION
.
-
getClusterUUID
public java.lang.String getClusterUUID()- Returns:
- the cluster UUID of the cluster that wrote this instance to the repository or
MISSING_UUID
if this instance was written by a cluster older thanSnapshotsService.UUIDS_IN_REPO_DATA_VERSION
.
-
getGenId
public long getGenId()Gets the generational index file id from which this instance was read. -
getSnapshotIds
Returns an unmodifiable collection of the snapshot ids. -
getSnapshotState
Returns theSnapshotState
for the given snapshot. Returnsnull
if there is no state for the snapshot. -
getVersion
Returns theVersion
for the given snapshot ornull
if unknown. -
getIndices
Returns an unmodifiable map of the index names toIndexId
in the repository. -
indicesToUpdateAfterRemovingSnapshot
public java.util.List<IndexId> indicesToUpdateAfterRemovingSnapshot(java.util.Collection<SnapshotId> snapshotIds)Returns the list ofIndexId
that have their snapshots updated but not removed (because they are still referenced by other snapshots) after removing the given snapshot from the repository.- Parameters:
snapshotIds
- SnapshotId to remove- Returns:
- List of indices that are changed but not removed
-
indexMetaDataToRemoveAfterRemovingSnapshots
public java.util.Map<IndexId,java.util.Collection<java.lang.String>> indexMetaDataToRemoveAfterRemovingSnapshots(java.util.Collection<SnapshotId> snapshotIds)Returns a map ofIndexId
to a collection ofString
containing all theIndexId
and theIndexMetadata
blob name in it that can be removed after removing the given snapshot from the repository. NOTE: Does not return a mapping forIndexId
values that will be removed completely from the repository.- Parameters:
snapshotIds
- SnapshotIds to remove- Returns:
- map of index to index metadata blob id to delete
-
addSnapshot
public RepositoryData addSnapshot(SnapshotId snapshotId, SnapshotState snapshotState, Version version, ShardGenerations shardGenerations, @Nullable java.util.Map<IndexId,java.lang.String> indexMetaBlobs, @Nullable java.util.Map<java.lang.String,java.lang.String> newIdentifiers)Add a snapshot and its indices to the repository; returns a new instance. If the snapshot already exists in the repository data, this method throws an IllegalArgumentException.- Parameters:
snapshotId
- Id of the new snapshotsnapshotState
- State of the new snapshotshardGenerations
- Updated shard generations in the new snapshot. For each index contained in the snapshot an array of new generations indexed by the shard id they correspond to must be supplied.indexMetaBlobs
- Map of index metadata blob uuidsnewIdentifiers
- Map of new index metadata blob uuids keyed by the identifiers of theIndexMetadata
in them
-
withGenId
Create a new instance with the given generation and all other fields equal to this instance.- Parameters:
newGeneration
- New Generation- Returns:
- New instance
-
withoutUUIDs
For test purposes, make a copy of this instance with the cluster- and repository UUIDs removed and all other fields unchanged, as if from an older version. -
withClusterUuid
-
removeSnapshots
public RepositoryData removeSnapshots(java.util.Collection<SnapshotId> snapshots, ShardGenerations updatedShardGenerations)Remove snapshots and remove any indices that no longer exist in the repository due to the deletion of the snapshots.- Parameters:
snapshots
- Snapshot ids to removeupdatedShardGenerations
- Shard generations that changed as a result of removing the snapshot. TheString[]
passed for eachIndexId
contains the new shard generation id for each changed shard indexed by its shardId
-
getSnapshots
Returns an immutable collection of the snapshot ids for the snapshots that contain the given index. -
equals
public boolean equals(java.lang.Object obj)- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()- Overrides:
hashCode
in classjava.lang.Object
-
resolveIndexId
Resolve the index name to the index id specific to the repository, throwing an exception if the index could not be resolved. -
resolveIndices
Resolve the given index names to index ids. -
resolveNewIndices
public java.util.List<IndexId> resolveNewIndices(java.util.List<java.lang.String> indicesToResolve, java.util.Map<java.lang.String,IndexId> inFlightIds)Resolve the given index names to index ids, creating new index ids for new indices in the repository.- Parameters:
indicesToResolve
- names of indices to resolveinFlightIds
- name to index mapping for currently in-flight snapshots not yet in the repository data to fall back to
-
snapshotsToXContent
public org.elasticsearch.common.xcontent.XContentBuilder snapshotsToXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, Version repoMetaVersion) throws java.io.IOExceptionWrites the snapshots metadata and the related indices metadata to x-content.- Throws:
java.io.IOException
-
snapshotsToXContent
public org.elasticsearch.common.xcontent.XContentBuilder snapshotsToXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, Version repoMetaVersion, boolean permitMissingUuid) throws java.io.IOExceptionWrites the snapshots metadata and the related indices metadata to x-content.- Parameters:
permitMissingUuid
- indicates whether we permit the repository- and cluster UUIDs to be missing, e.g. we are serializing for the in-memory cache or running tests- Throws:
java.io.IOException
-
indexMetaDataGenerations
-
snapshotsFromXContent
public static RepositoryData snapshotsFromXContent(org.elasticsearch.common.xcontent.XContentParser parser, long genId, boolean fixBrokenShardGens) throws java.io.IOExceptionReads an instance ofRepositoryData
from x-content, loading the snapshots and indices metadata.- Parameters:
fixBrokenShardGens
- set totrue
to filter out broken shard generations read from theparser
viaShardGenerations.fixShardGeneration(java.lang.String)
. Used to disable fixing broken generations when reading from cached bytes that we trust to not contain broken generations.- Throws:
java.io.IOException
-