Class BlobStoreIndexShardSnapshots

java.lang.Object
org.elasticsearch.index.snapshots.blobstore.BlobStoreIndexShardSnapshots
All Implemented Interfaces:
Iterable<SnapshotFiles>, ToXContent, ToXContentFragment

public class BlobStoreIndexShardSnapshots extends Object implements Iterable<SnapshotFiles>, ToXContentFragment
Contains information about all snapshots for the given shard in repository

This class is used to find shard files that were already snapshotted and clear out shard files that are no longer referenced by any snapshots of the shard.

  • Field Details

  • Method Details

    • withRetainedSnapshots

      public BlobStoreIndexShardSnapshots withRetainedSnapshots(Set<SnapshotId> retainedSnapshots)
      Creates a new list of the shard's snapshots (BlobStoreIndexShardSnapshots) retaining only the shard snapshots specified by ID in retainedSnapshots. Typically used for snapshot deletions, which reduce the shard snapshots.
    • withAddedSnapshot

      public BlobStoreIndexShardSnapshots withAddedSnapshot(SnapshotFiles snapshotFiles)
      Creates a new list of the shard's snapshots (BlobStoreIndexShardSnapshots) adding a new shard snapshot (SnapshotFiles).
    • withClone

      public BlobStoreIndexShardSnapshots withClone(String source, String target)
      Create a new instance that has a new snapshot by name target added which shares all files with the snapshot of name source.
      Parameters:
      source - source snapshot name
      target - target snapshot name
      Returns:
      new instance with added cloned snapshot
    • snapshots

      public List<SnapshotFiles> snapshots()
      Returns list of snapshots
      Returns:
      list of snapshots
    • findPhysicalIndexFile

      public BlobStoreIndexShardSnapshot.FileInfo findPhysicalIndexFile(StoreFileMetadata storeFileMetadata)
      Finds reference to a snapshotted file by its StoreFileMetadata
      Parameters:
      storeFileMetadata - store file metadata to find file info for
      Returns:
      the file info that matches the specified physical file or null if the file is not present in any of snapshots
    • findNameFile

      public BlobStoreIndexShardSnapshot.FileInfo findNameFile(String name)
      Finds reference to a snapshotted file by its snapshot name
      Parameters:
      name - file name
      Returns:
      file info or null if file is not present in any of snapshots
    • iterator

      public Iterator<SnapshotFiles> iterator()
      Specified by:
      iterator in interface Iterable<SnapshotFiles>
    • toXContent

      public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException
      Writes index file for the shard in the following format.
       
       {
           "files": [{
               "name": "__3",
               "physical_name": "_0.si",
               "length": 310,
               "checksum": "1tpsg3p",
               "written_by": "5.1.0",
               "meta_hash": "P9dsFxNMdWNlb......"
           }, {
               "name": "__2",
               "physical_name": "segments_2",
               "length": 150,
               "checksum": "11qjpz6",
               "written_by": "5.1.0",
               "meta_hash": "P9dsFwhzZWdtZ......."
           }, {
               "name": "__1",
               "physical_name": "_0.cfe",
               "length": 363,
               "checksum": "er9r9g",
               "written_by": "5.1.0"
           }, {
               "name": "__0",
               "physical_name": "_0.cfs",
               "length": 3354,
               "checksum": "491liz",
               "written_by": "5.1.0"
           }, {
               "name": "__4",
               "physical_name": "segments_3",
               "length": 150,
               "checksum": "134567",
               "written_by": "5.1.0",
               "meta_hash": "P9dsFwhzZWdtZ......."
           }],
           "snapshots": {
               "snapshot_1": {
                   "files": ["__0", "__1", "__2", "__3"]
               },
               "snapshot_2": {
                   "files": ["__0", "__1", "__2", "__4"]
               }
           }
       }
       }
       
       
      Specified by:
      toXContent in interface ToXContent
      Throws:
      IOException
    • areIntegrityAssertionsEnabled

      public static boolean areIntegrityAssertionsEnabled()
    • fromXContent

      public static BlobStoreIndexShardSnapshots fromXContent(XContentParser parser) throws IOException
      Throws:
      IOException