Class RecoveryTarget

    • Constructor Detail

      • RecoveryTarget

        public RecoveryTarget​(IndexShard indexShard,
                              DiscoveryNode sourceNode,
                              PeerRecoveryTargetService.RecoveryListener listener,
                              java.util.function.LongConsumer ensureClusterStateVersionCallback)
        Creates a new recovery target object that represents a recovery to the provided shard.
        Parameters:
        indexShard - local shard where we want to recover to
        sourceNode - source node of the recovery where we recover from
        listener - called when recovery is completed/failed
        ensureClusterStateVersionCallback - callback to ensure that the current node is at least on a cluster state with the provided version; necessary for primary relocation so that new primary knows about all other ongoing replica recoveries when replicating documents (see RecoverySourceHandler)
    • Method Detail

      • retryCopy

        public RecoveryTarget retryCopy()
        Returns a fresh recovery target to retry recovery from the same source node onto the same shard and using the same listener.
        Returns:
        a copy of this recovery target
      • recoveryId

        public long recoveryId()
      • shardId

        public ShardId shardId()
      • lastAccessTime

        public long lastAccessTime()
        return the last time this RecoveryStatus was used (based on System.nanoTime()
      • setLastAccessTime

        public void setLastAccessTime()
        sets the lasAccessTime flag to now
      • store

        public Store store()
      • cancel

        public void cancel​(java.lang.String reason)
        cancel the recovery. calling this method will clean temporary files and release the store unless this object is in use (in which case it will be cleaned once all ongoing users call AbstractRefCounted.decRef()

        if cancellableThreads() was used, the threads will be interrupted.

      • fail

        public void fail​(RecoveryFailedException e,
                         boolean sendShardFailure)
        fail the recovery and call listener
        Parameters:
        e - exception that encapsulating the failure
        sendShardFailure - indicates whether to notify the master of the shard failure
      • markAsDone

        public void markAsDone()
        mark the current recovery as done
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • prepareForTranslogOperations

        public void prepareForTranslogOperations​(boolean fileBasedRecovery,
                                                 int totalTranslogOps,
                                                 ActionListener<java.lang.Void> listener)
        Implementation of RecoveryTargetHandler
        Specified by:
        prepareForTranslogOperations in interface RecoveryTargetHandler
        Parameters:
        fileBasedRecovery - whether or not this call is part of an file based recovery
        totalTranslogOps - total translog operations expected to be sent
      • finalizeRecovery

        public void finalizeRecovery​(long globalCheckpoint,
                                     ActionListener<java.lang.Void> listener)
        Description copied from interface: RecoveryTargetHandler
        The finalize request refreshes the engine now that new segments are available, enables garbage collection of tombstone files, updates the global checkpoint.
        Specified by:
        finalizeRecovery in interface RecoveryTargetHandler
        Parameters:
        globalCheckpoint - the global checkpoint on the recovery source
        listener - the listener which will be notified when this method is completed
      • indexTranslogOperations

        public void indexTranslogOperations​(java.util.List<Translog.Operation> operations,
                                            int totalTranslogOps,
                                            long maxSeenAutoIdTimestampOnPrimary,
                                            long maxSeqNoOfDeletesOrUpdatesOnPrimary,
                                            RetentionLeases retentionLeases,
                                            ActionListener<java.lang.Long> listener)
        Description copied from interface: RecoveryTargetHandler
        Index a set of translog operations on the target
        Specified by:
        indexTranslogOperations in interface RecoveryTargetHandler
        Parameters:
        operations - operations to index
        totalTranslogOps - current number of total operations expected to be indexed
        maxSeenAutoIdTimestampOnPrimary - the maximum auto_id_timestamp of all append-only requests processed by the primary shard
        maxSeqNoOfDeletesOrUpdatesOnPrimary - the max seq_no of update operations (index operations overwrite Lucene) or delete ops on the primary shard when capturing these operations. This value is at least as high as the max_seq_no_of_updates on the primary was when any of these ops were processed on it.
        retentionLeases - the retention leases on the primary
        listener - a listener which will be notified with the local checkpoint on the target after these operations are successfully indexed on the target.
      • receiveFileInfo

        public void receiveFileInfo​(java.util.List<java.lang.String> phase1FileNames,
                                    java.util.List<java.lang.Long> phase1FileSizes,
                                    java.util.List<java.lang.String> phase1ExistingFileNames,
                                    java.util.List<java.lang.Long> phase1ExistingFileSizes,
                                    int totalTranslogOps)
        Description copied from interface: RecoveryTargetHandler
        Notifies the target of the files it is going to receive
        Specified by:
        receiveFileInfo in interface RecoveryTargetHandler
      • cleanFiles

        public void cleanFiles​(int totalTranslogOps,
                               Store.MetadataSnapshot sourceMetaData)
                        throws java.io.IOException
        Description copied from interface: RecoveryTargetHandler
        After all source files has been sent over, this command is sent to the target so it can clean any local files that are not part of the source store
        Specified by:
        cleanFiles in interface RecoveryTargetHandler
        Parameters:
        totalTranslogOps - an update number of translog operations that will be replayed later on
        sourceMetaData - meta data of the source store
        Throws:
        java.io.IOException
      • getTempNameForFile

        public java.lang.String getTempNameForFile​(java.lang.String origFile)
        Get a temporary name for the provided file name.