org.apache.lucene.index

## Class MergePolicy.OneMergeProgress

- java.lang.Object
- - org.apache.lucene.index.MergePolicy.OneMergeProgress

- Enclosing class:
    MergePolicy

      public static class MergePolicy.OneMergeProgress
      extends Object

  Progress and state for an executing merge. This class encapsulates the logic to pause and resume the merge thread or to abort the merge entirely.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `MergePolicy.OneMergeProgress.PauseReason` Reason for pausing the merge thread.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OneMergeProgress()` Creates a new merge progress info.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `abort()` Abort the merge this progress tracks at the next possible moment.
    `Map<MergePolicy.OneMergeProgress.PauseReason,Long>` | `getPauseTimes()` Returns pause reasons and associated times in nanoseconds.
    `boolean` | `isAborted()` Return the aborted state of this merge.
    `void` | `pauseNanos(long pauseNanos, MergePolicy.OneMergeProgress.PauseReason reason, BooleanSupplier condition)` Pauses the calling thread for at least `pauseNanos` nanoseconds unless the merge is aborted or the external condition returns `false`, in which case control returns immediately.
    `void` | `wakeup()` Request a wakeup for any threads stalled in `pauseNanos(long, org.apache.lucene.index.MergePolicy.OneMergeProgress.PauseReason, java.util.function.BooleanSupplier)`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### OneMergeProgress

          public OneMergeProgress()

      Creates a new merge progress info.

  - ### Method Detail

    - #### abort

          public void abort()

      Abort the merge this progress tracks at the next possible moment.

    - #### isAborted

          public boolean isAborted()

      Return the aborted state of this merge.

    - #### pauseNanos

          public void pauseNanos(long pauseNanos,
                                 MergePolicy.OneMergeProgress.PauseReason reason,
                                 BooleanSupplier condition)
                          throws InterruptedException

      Pauses the calling thread for at least `pauseNanos` nanoseconds unless the merge is aborted or the external condition returns `false`, in which case control returns immediately. The external condition is required so that other threads can terminate the pausing immediately, before `pauseNanos` expires. We can't rely on just `Condition.awaitNanos(long)` alone because it can return due to spurious wakeups too.
      Parameters:
        `condition` - The pause condition that should return false if immediate return from this method is needed. Other threads can wake up any sleeping thread by calling `wakeup()`, but it'd fall to sleep for the remainder of the requested time if this condition
      Throws:
        `InterruptedException`

    - #### wakeup

          public void wakeup()

      Request a wakeup for any threads stalled in `pauseNanos(long, org.apache.lucene.index.MergePolicy.OneMergeProgress.PauseReason, java.util.function.BooleanSupplier)`.

    - #### getPauseTimes

          public Map<MergePolicy.OneMergeProgress.PauseReason,Long> getPauseTimes()

      Returns pause reasons and associated times in nanoseconds.

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.