Class AbstractLifecycleRunnable

org.elasticsearch.common.util.concurrent.AbstractRunnable
org.elasticsearch.common.util.concurrent.AbstractLifecycleRunnable
All Implemented Interfaces:

public abstract class AbstractLifecycleRunnable extends AbstractRunnable
AbstractLifecycleRunnable is a service-lifecycle aware AbstractRunnable.

This simplifies the running and rescheduling of Lifecycle-based Runnables.

  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractLifecycleRunnable​(Lifecycle lifecycle, org.apache.logging.log4j.Logger logger)
    AbstractLifecycleRunnable must be aware of the actual lifecycle to react properly.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    This method has the same semantics as
    protected abstract void
    Perform runnable logic, but only if the lifecycle is not stopped or closed.
    void
    This method is called in a finally block after successful execution or on a rejection.
    protected void
    This method is invoked in the finally block of the run method, but it is only executed if the lifecycle is not stopped or closed.

    Methods inherited from class org.elasticsearch.common.util.concurrent.AbstractRunnable

    isForceExecution, onFailure, onRejection, run

    Methods inherited from class java.lang.

    , , , , , , , , , ,
  • Constructor Details

    • AbstractLifecycleRunnable

      public AbstractLifecycleRunnable(Lifecycle lifecycle, org.apache.logging.log4j.Logger logger)
      AbstractLifecycleRunnable must be aware of the actual lifecycle to react properly.
      Parameters:
      lifecycle - The lifecycle to react too
      logger - The logger to use when logging
      Throws:
      - if any parameter is null
  • Method Details

    • doRun

      protected final void doRun() throws
      This method has the same semantics as

      This invokes doRunInLifecycle() only if the lifecycle is not stopped or closed. Otherwise it exits immediately.

      Specified by:
      doRun in class AbstractRunnable
      Throws:
      - if the run method throws an InterruptedException
    • doRunInLifecycle

      protected abstract void doRunInLifecycle() throws
      Perform runnable logic, but only if the lifecycle is not stopped or closed.
      Throws:
      - if the run method throws an
    • onAfter

      public final void onAfter()
      This method is called in a finally block after successful execution or on a rejection.

      This overrides the default behavior of onAfter to add the caveat that it only runs if the lifecycle is not stopped or closed.

      Note: this does not guarantee that it won't be stopped concurrently as it invokes onAfterInLifecycle(), but it's a solid attempt at preventing it. For those that use this for rescheduling purposes, the next invocation would be effectively cancelled immediately if that's the case.

      Overrides:
      onAfter in class AbstractRunnable
      See Also:
      onAfterInLifecycle()
    • onAfterInLifecycle

      protected void onAfterInLifecycle()
      This method is invoked in the finally block of the run method, but it is only executed if the lifecycle is not stopped or closed.

      This method is most useful for rescheduling the next iteration of the current runnable.