Class MergePolicy.OneMergeProgress

  • Enclosing class:
    MergePolicy

    public static class MergePolicy.OneMergeProgress
    extends java.lang.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.
    • 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,
                               java.util.function.BooleanSupplier condition)
                        throws java.lang.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:
        java.lang.InterruptedException
      • setMergeThread

        final void setMergeThread​(java.lang.Thread owner)