Class CancellableThreads

java.lang.Object
org.opensearch.common.util.CancellableThreads

@PublicApi(since="1.0.0") public class CancellableThreads extends Object
A utility class for multi threaded operation that needs to be cancellable via interrupts. Every cancellable operation should be executed via execute(Interruptible), which will capture the executing thread and make sure it is interrupted in the case of cancellation.

Cancellation policy: This class does not support external interruption via Thread#interrupt(). Always use #cancel() instead.

Opensearch.api:
  • Constructor Details

    • CancellableThreads

      public CancellableThreads()
  • Method Details

    • isCancelled

      public boolean isCancelled()
    • checkForCancel

      public void checkForCancel()
    • execute

      public void execute(CancellableThreads.Interruptible interruptible)
      run the Interruptible, capturing the executing thread. Concurrent calls to cancel(String) will interrupt this thread causing the call to prematurely return.
      Parameters:
      interruptible - code to run
    • executeIO

      public void executeIO(CancellableThreads.IOInterruptible interruptible) throws IOException
      run the Interruptible, capturing the executing thread. Concurrent calls to cancel(String) will interrupt this thread causing the call to prematurely return.
      Parameters:
      interruptible - code to run
      Throws:
      IOException
    • cancel

      public void cancel(String reason)
      cancel all current running operations. Future calls to checkForCancel() will be failed with the given reason
    • setOnCancel

      public void setOnCancel(CancellableThreads.OnCancel onCancel)
      Registers a callback that will be invoked when some running operations are cancelled or checkForCancel() is called.