Class Maintainer

  • All Implemented Interfaces:
    Runnable

    public abstract class Maintainer
    extends Object
    implements Runnable
    The base class for maintainers. A maintainer is some job which runs at a fixed rate to perform maintenance tasks.
    Author:
    bratseth, mpolden, jonmv
    • Field Detail

      • log

        protected final Logger log
    • Method Detail

      • run

        public void run()
        Specified by:
        run in interface Runnable
      • shutdown

        public void shutdown()
        Starts shutdown of this, typically by shutting down executors. awaitShutdown() waits for shutdown to complete.
      • awaitShutdown

        public void awaitShutdown()
        Waits for shutdown to complete, calling shutdown() if this hasn't been done already.
      • shuttingDown

        public final boolean shuttingDown()
        Returns whether this is being shut down
      • maintain

        protected abstract double maintain()
        Called once each time this maintenance job should run.
        Returns:
        the degree to which the run was successful - a number between 0 (no success), to 1 (complete success). Note that this indicates whether something is wrong, so e.g if the call did nothing because it should do nothing, 1.0 should be returned.
      • asSuccessFactor

        protected final double asSuccessFactor​(int attempts,
                                               int failures)
        Convenience methods to convert attempts and failures into a success factor
      • interval

        protected Duration interval()
        Returns the interval at which this job is set to run
      • lockAndMaintain

        public final void lockAndMaintain​(boolean force)
        Run this while holding the job lock
      • name

        public final String name()
        Returns the simple name of this job