Class CompositeService

java.lang.Object
org.apache.hadoop.service.AbstractService
org.apache.hadoop.service.CompositeService
All Implemented Interfaces:
Closeable, AutoCloseable, Service
Direct Known Subclasses:
AddingCompositeService, AppAdminClient, org.apache.hadoop.registry.client.impl.zk.CuratorService, TimelineClient, TimelineReaderClient

@Public @Evolving public class CompositeService extends AbstractService
Composition of services.
  • Field Details

    • STOP_ONLY_STARTED_SERVICES

      protected static final boolean STOP_ONLY_STARTED_SERVICES
      Policy on shutdown: attempt to close everything (purest) or only try to close started services (which assumes that the service implementations may not handle the stop() operation except when started. Irrespective of this policy, if a child service fails during its init() or start() operations, it will have stop() called on it.
      See Also:
  • Constructor Details

    • CompositeService

      public CompositeService(String name)
  • Method Details

    • getServices

      public List<Service> getServices()
      Get a cloned list of services
      Returns:
      a list of child services at the time of invocation - added services will not be picked up.
    • addService

      protected void addService(Service service)
      Add the passed Service to the list of services managed by this CompositeService
      Parameters:
      service - the Service to be added
    • addIfService

      protected boolean addIfService(Object object)
      If the passed object is an instance of Service, add it to the list of services managed by this CompositeService
      Parameters:
      object - object.
      Returns:
      true if a service is added, false otherwise.
    • removeService

      protected boolean removeService(Service service)
    • 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
    • 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.