Class SnapshotShardsService

All Implemented Interfaces:
Closeable, AutoCloseable, ClusterStateListener, LifecycleComponent, Releasable, IndexEventListener

public class SnapshotShardsService extends AbstractLifecycleComponent implements ClusterStateListener, IndexEventListener
This service runs on data nodes and controls currently running shard snapshots on these nodes. It is responsible for starting and stopping shard level snapshots. See package level documentation of org.elasticsearch.snapshots for details.
  • Constructor Details

  • Method Details

    • doStart

      protected void doStart()
      Specified by:
      doStart in class AbstractLifecycleComponent
    • doStop

      protected void doStop()
      Specified by:
      doStop in class AbstractLifecycleComponent
    • doClose

      protected void doClose()
      Specified by:
      doClose in class AbstractLifecycleComponent
    • clusterChanged

      public void clusterChanged(ClusterChangedEvent event)
      Description copied from interface: ClusterStateListener
      Called when cluster state changes.
      Specified by:
      clusterChanged in interface ClusterStateListener
    • beforeIndexShardClosed

      public void beforeIndexShardClosed(ShardId shardId, @Nullable IndexShard indexShard, Settings indexSettings)
      Description copied from interface: IndexEventListener
      Called before the index shard gets closed.
      Specified by:
      beforeIndexShardClosed in interface IndexEventListener
      indexShard - The index shard
    • currentSnapshotShards

      public Map<ShardId,IndexShardSnapshotStatus> currentSnapshotShards(Snapshot snapshot)
      Returns status of shards that are snapshotted on the node and belong to the given snapshot

      This method is executed on data node

      snapshot - snapshot
      map of shard id to snapshot status
    • getShardStateId

      @Nullable public static String getShardStateId(IndexShard indexShard, org.apache.lucene.index.IndexCommit snapshotIndexCommit) throws IOException
      Generates an identifier from the current state of a shard that can be used to detect whether a shard's contents have changed between two snapshots. A shard is assumed to have unchanged contents if its global- and local checkpoint are equal, its maximum sequence number has not changed and its history- and force-merge-uuid have not changed. The method returns null if global and local checkpoint are different for a shard since no safe unique shard state id can be used in this case because of the possibility of a primary failover leading to different shard content for the same sequence number on a subsequent snapshot.
      indexShard - Shard
      snapshotIndexCommit - IndexCommit for shard
      shard state id or null if none can be used