Class AsyncDispatcher

java.lang.Object
org.apache.hadoop.service.AbstractService
org.apache.hadoop.yarn.event.AsyncDispatcher
All Implemented Interfaces:
Closeable, AutoCloseable, Service, Dispatcher

@Public @Evolving public class AsyncDispatcher extends AbstractService implements Dispatcher
Dispatches Events in a separate thread. Currently only single thread does that. Potentially there could be multiple channels for each event type class and a thread pool can be used to dispatch the events.
  • Field Details

    • LOG

      protected static final org.slf4j.Logger LOG
    • eventDispatchers

      protected final Map<Class<? extends Enum>,EventHandler> eventDispatchers
  • Constructor Details

    • AsyncDispatcher

      public AsyncDispatcher()
    • AsyncDispatcher

      public AsyncDispatcher(BlockingQueue<Event> eventQueue)
    • AsyncDispatcher

      public AsyncDispatcher(String dispatcherName)
      Set a name for this dispatcher thread.
      Parameters:
      dispatcherName - name of the dispatcher thread
  • Method Details

    • logTriggered

      protected void logTriggered(String message)
    • disableExitOnDispatchException

      @VisibleForTesting public void disableExitOnDispatchException()
    • serviceInit

      protected void serviceInit(Configuration conf) throws Exception
      Description copied from class: AbstractService
      All initialization code needed by a service. This method will only ever be called once during the lifecycle of a specific service instance. Implementations do not need to be synchronized as the logic in AbstractService.init(Configuration) prevents re-entrancy. The base implementation checks to see if the subclass has created a new configuration instance, and if so, updates the base class value
      Overrides:
      serviceInit in class AbstractService
      Parameters:
      conf - configuration
      Throws:
      Exception - on a failure -these will be caught, possibly wrapped, and will trigger a service stop
    • serviceStart

      protected void serviceStart() throws Exception
      Description copied from class: AbstractService
      Actions called during the INITED to STARTED transition. This method will only ever be called once during the lifecycle of a specific service instance. Implementations do not need to be synchronized as the logic in AbstractService.start() prevents re-entrancy.
      Overrides:
      serviceStart in class AbstractService
      Throws:
      Exception - if needed -these will be caught, wrapped, and trigger a service stop
    • setDrainEventsOnStop

      public void setDrainEventsOnStop()
    • serviceStop

      protected void serviceStop() throws Exception
      Description copied from class: AbstractService
      Actions called during the transition to the STOPPED state. This method will only ever be called once during the lifecycle of a specific service instance. Implementations do not need to be synchronized as the logic in AbstractService.stop() prevents re-entrancy. Implementations MUST write this to be robust against failures, including checks for null references -and for the first failure to not stop other attempts to shut down parts of the service.
      Overrides:
      serviceStop in class AbstractService
      Throws:
      Exception - if needed -these will be caught and logged.
    • dispatch

      protected void dispatch(Event event)
    • register

      public void register(Class<? extends Enum> eventType, EventHandler handler)
      Specified by:
      register in interface Dispatcher
    • getEventHandler

      public EventHandler<Event> getEventHandler()
      Specified by:
      getEventHandler in interface Dispatcher
    • isEventThreadWaiting

      @VisibleForTesting protected boolean isEventThreadWaiting()
    • isDrained

      protected boolean isDrained()
    • isStopped

      protected boolean isStopped()
    • addMetrics

      public void addMetrics(org.apache.hadoop.yarn.metrics.EventTypeMetrics metrics, Class<? extends Enum> eventClass)
    • getEventQueueSize

      public int getEventQueueSize()